Jak powiązać Ctrl + strzałki z klawiszami Home i End? xmodmap nie działa

15

W systemie Windows zwykłem łączyć Ctrl+ Leftdo Homei Ctrl+ prawo do Endza pośrednictwem ahk.

Teraz staram się osiągnąć to zachowanie w Ubuntu. Próbowałem edytować /etc/inputrc:

"\e[1;5C": end-of-line
"\e[1;5D": beginning-of-line

Działa, ale tylko w oknie terminala. Próbowałem także xmodmap:

xmodmap -e "keycode 113=Left NoSymbol Home"

ale to nie działa.
Dziwne jest to, że jeśli powiążę z Shift+ Leftw xmodmap, to działa:

xmodmap -e "keycode 113=Left Home"

Domyślam się tutaj, że domyślne zachowanie Ctrl+ Left(pomijanie słów) w jakiś sposób ma pierwszeństwo przed powiązaniami xmodmap.

Gdzie mogę znaleźć, gdzie znajdują się domyślne powiązania i jak je usunąć? A może mógłbym tam powiązać potrzebne zachowanie?

Jestem na Ubuntu 12.04

acid009
źródło
Czy otrzymujesz xevdane wyjściowe dla kluczy, które chcesz zmienić?
Seth
Ja robię. Mam kod dostępu 113 = Lewy z wyjścia xev.
acid009
Czy możesz dodać cały xevwynik?
Seth
stan 0x0, kod klucza 113 (keyym 0xff51, lewy)
acid009
i stan 0x4, kod klucza 113 (klawisz 0xff51, Lewy), jeśli zostanie naciśnięty klawisz Ctrl - stan zostanie zmieniony na 0x4 zgodnie z oczekiwaniami
acid009

Odpowiedzi:

11

AutoKey może wykonywać takie powiązania, ale wymaga uruchomienia usługi w tle (jak ahk, ale w przeciwieństwie do xmodmap).

Skonfiguruj „frazę”, w której znajduje się tekst <home>, metoda wklejania Keyboard, a skrót <ctrl>-<left>:

AutoKey GUI

cscarney
źródło
Ładny. To może być również dobre dopasowanie jako odpowiedź tutaj również askubuntu.com/questions/254424/…
Kevin Bowen
1
Rozszerzona, bardziej ogólna wersja: askubuntu.com/a/304834/194 Czy to czyni duplikat tego pytania?
cscarney
Prawdopodobnie tak, ale nadal powinieneś dostać nagrodę. ;-)
Kevin Bowen
ta metoda nie działa.
acid009
1
@JeffDror to <page_up> i <page_down> ( code.google.com/p/autokey/wiki/SpecialKeys )
cscarney
1

Używam aluminiowej klawiatury Apple na stacji roboczej Ubuntu i zrobiły to dla mnie następujące polecenia xmodmap:

# remap Ctrl_L to ModeSwitch, then use it to map arrow keys so that
# they act like on the MacBook keyboard with Fn key pressed 
xmodmap -e "keycode 37=Mode_switch"
xmodmap -e "keycode 113 = Left NoSymbol Home"
xmodmap -e "keycode 114 = Right NoSymbol End"
xmodmap -e "keycode 111 = Up NoSymbol Prior"
xmodmap -e "keycode 116 = Down NoSymbol Next"

Działa to doskonale, ponieważ mój Caps Lockklawisz został przypisany do funkcji Control przy użyciu preferencji klawiatury Ubuntu, więc lewy klawisz Control nie jest potrzebny. Ponieważ znajduje się tam, gdzie klawisz Fn znajduje się na klawiaturze MacBooka, przełączanie między klawiaturą na komputerze stacjonarnym i MacBook nie wpływa na pamięć mięśni.

Peter Kvitek
źródło
0

Autokey pracował dla mnie. Domyślne zachowanie Autokey to: mapuj zarówno right ctrl+, jak arrowi left ctrl+ arrow. I chciałem tylko right ctrl, bo left ctrlnawigowałem słowa.

Oto skrypt, którego użyłem w Autokey:

output = system.exec_command('xinput query-state "AT Translated Set 2 keyboard" | grep down', getOutput=True)
# 105 is right ctrl
if 'key[105]=down' in output:
    keyboard.send_keys('<end>')
else:
    keyboard.send_keys('<ctrl>+<right>')

Uwaga: możesz mieć inną nazwę klawiatury. Wypróbuj je wszystkie. Miałem 3 urządzenia, ale tylko jedno działało

xinput list --name-only | grep -i keyb
Virtual core keyboard
Virtual core XTEST keyboard
AT Translated Set 2 keyboard

PS Zainstalowałem Autokey z GitHub, ponieważ pakiet w Ubuntu Software jest uszkodzony.

wibotwi
źródło