Zmień Caps-Lock, aby kontrolować w wirtualnej konsoli na Ubuntu 17

10

Chciałbym zmienić zachowanie Caps Lock w terminalach wirtualnych (np. Tty CtrlAltF3), aby działał jak modyfikator sterowania. Idealnie, chciałbym również, aby działał jako ucieczka, gdy jest wciśnięty sam, ale samo uzyskanie kontroli jest trudne.

Używam Ubuntu 17.04. Przeczytałem i próbowałem wielu podejść do wprowadzenia tej zmiany, ale żadne z nich nie wydaje się mieć zastosowania do mojego systemu zgodnie z opisem. Mam wrażenie, że systemd odgrywa w tym rolę, ale szczegóły są niejasne.

Napisałem plik caps_control.kmap, który mapuje czapki do kontroli,

keymaps 0-255
keycode  58 = Control

Jeśli uruchomię loadkeys caps_control.kmapz wirtualnej konsoli, to działa. Teraz chciałbym, aby ładował się automatycznie podczas rozruchu / logowania / cokolwiek ...

Znalazłem odniesień do korzystania /etc/rc.localz tego prawa, ale mój system nie ma takiego pliku, choć ma kilka katalogów podoba /etc/rc0.d/, /etc/rc1.d/...

Wygląda na to, że ponieważ Ubuntu 17 używa sytemd, powinienem użyć tego localectldo zarządzania, ale nie jest dla mnie jasne, jak to zrobić. Na przykład,

$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.

Strona localectlpodręcznika zawierająca wzmianki /etc/locale.confi /etc/vconsole.confżadne z nich nie istnieje w moim systemie.

Jestem całkowicie zagubiony. Czy ktoś może skierować mnie we właściwym kierunku?

ivan
źródło
Czy potrzebujesz tej zmiany, aby była aktywna dla wszystkich użytkowników, czy tylko dla Ciebie?
acer
@acer Tak czy inaczej by mi pasowało, ponieważ tak naprawdę jestem jedynym użytkownikiem na tym komputerze.
ivan
Hmm ... Dodajesz wiersz w ~ / .profile, loadkeys caps_control.kmapktóry byłby wykonywany po zalogowaniu.
acer
@ acer Wywoływanie loadkeysz ~ / .profile wydaje się być problematyczne. Kiedy się loguję, pojawia się komunikat „Nie można uzyskać deskryptora pliku odnoszącego się do konsoli”.
ivan

Odpowiedzi:

11

Aby zmienić Caps Lock w dodatkowy modyfikator Ctrl, który działa również w konsolach tty, /etc/default/keyboardmożna go edytować i ustawić:

XKBOPTIONS=ctrl:nocaps

Jeśli już XKBOPTIONSustawiłeś, dołącz ctrl:nocapsdo jego istniejącej wartości, używając przecinka dla separatora, np .:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Powinien być skuteczny po następnym ponownym uruchomieniu lub wydaniu setupconpolecenia.

Opcja powinna być obecna podczas uruchamiania localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

W sesji X innym sposobem sprawdzenia, czy jest ustawiony, jest:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']
Gunnar Hjalmarsson
źródło
1
inną opcją XKB jest "ctrl:nocaps". w X różnica jest subtelna: z ctrlopcją, xeva inne narzędzia zobaczą Control_Lsymbol po naciśnięciu klawisza CapsLock, podczas gdy capsopcja nadal będzie wyświetlać klawisz Caps_Lock. nie jestem pewien, czy ta różnica przełoży się na mapę klawiszy wirtualnej konsoli.
donkiszotyczny
@quixotic: Dziękujemy za wzmiankę ctrl:nocaps. Dodałem to do mojej odpowiedzi.
Gunnar Hjalmarsson,
Wiesz, dlaczego to dla mnie nie działa? To właściwie jedna z pierwszych rzeczy, które wypróbowałem i podoba mi się to podejście. Niestety nie ma to wpływu na mój system.
ivan
1
@ivan: Właśnie przetestowałem siebie i stwierdziłem, że moja pierwsza sugestia ( caps:ctrl_modifier) nie działa w tty. Jednak dla mnie (17.10) ctrl:nocapsjest. Zobacz moją zredagowaną odpowiedź.
Gunnar Hjalmarsson,
1
@GunnarHjalmarsson Nie jestem zbytnio zaznajomiony z metodą tłumaczenia map XKB na mapy konsolowe przez debian / ubuntu ( ckbcompmyślę, że to wymaga ?). nie pamiętałem caps:ctrl_modifieropcji, o której wspomniałeś po raz pierwszy, więc spojrzałem na to, aby porównać ją z tym, którego ctrl:nocapszwykle używam, i pomyślałem, że warto tu wspomnieć o różnicy. Cieszę się, że było pomocne.
donkiszotyczny