Jak programowo zamienić klawisze Caps Lock i Esc?

18

Jestem intensywnym użytkownikiem Vima i jedną z pierwszych rzeczy, które robię, kiedy zaczynam pracę nad czystą instalacją ubuntu, jest zamiana klawiszy Caps Lock i Esc, aby ograniczyć ruchy dłoni na klawiaturze.

Do tej pory robiłem to za pomocą okna dialogowego konfiguracji klawiatury, ale teraz piszę zestaw skryptów, które ustawią Ubuntu tak, jak lubię i nie byłem w stanie znaleźć skryptu lub programowalnego sposobu zmiany tego elementu konfiguracji.

Nie szukam opcji, które zamieniają klawisze na jakimkolwiek innym poziomie niż sam gnom, więc szukam sposobu na skryptowanie tej zmiany i wyświetlanie jej w konfiguracji klawiatury, z której korzystałem, czy powinienem zdecydować przywróć ręcznie w przyszłości.

Jacobo de Vera
źródło
dobry pomysł! cały czas narzekałem na przesunięcie ręki do Esc podczas pracy w Vimie, ale teraz to jest rozwiązanie! thanx bracie ;-)
sazary
1
Bądź jednak ostrożny, gdy przyzwyczaisz się do zamiany, staje się niewygodny, gdy musisz pracować na klawiaturze innej osoby :)
Jacobo de Vera
2
Inną opcją jest Ctrl-C zamiast Esc. (Działa na wszystkich klawiaturach.
Eric Wilson,
@FarmBoy, niesamowite! Nie znałem tego!
Jacobo de Vera,

Odpowiedzi:

22

Możesz to zrobić za pomocą GUI, otwierając Keyboard Preferencespanel sterowania (pod System -> Preferences) i wybierając Layoutzakładkę. Kliknij Options...przycisk, aby otworzyć okno dialogowe opcji układu. Rozwiń Caps Lock key behavioursekcję i wybierz Swap ESC and Caps Lock.

Istnieje kilka sposobów pisania skryptów tego rodzaju.

Bezpośrednio przez Xkb

Możemy dokonać zmiany bezpośrednio w następujący sposób:

setxkbmap -option caps:swapescape

Możesz wyłączyć wszystkie bieżące opcje układu (które przywrócą domyślne zachowanie caps lock):

setxkbmap -option ''

Via GConf

Panel sterowania preferencjami klawiatury przechowuje swoją konfigurację przez gconf, przy czym układ jest faktycznie stosowany przez gnome-settings-daemon. Dlatego możesz spowodować gnome-settings-daemondostosowanie układu, samodzielnie aktualizując gconf.

Wydaje się, że odpowiednie ustawienie w tym przypadku to /desktop/gnome/peripherals/keyboard/kbd/options. Możesz więc ustawić tę opcję za pomocą:

gconftool-2 --set /desktop/gnome/peripherals/keyboard/kbd/options \
    --type list --list-type string \
    '[caps<tab>caps:swapescape]'

Powyżej <tab>powinna być dosłownym znakiem tabulacji zamiast spacji. Możesz ponownie wyłączyć zachowanie, ustawiając klucz gconf na pustą listę.

James Henstridge
źródło
Opcja gconf była dokładnie tym, czego szukałem, jednak Twoja konfiguracja zamieniała Caps Lock w klawisz Escape i klawisz Esc w klawisz Tab. Ponownie zmieniłem ustawienie ręcznie i spojrzałem na wartość w edytorze gconf, tak naprawdę było [caps<tab>caps:swapescape]. Wszystko działa teraz, akceptuję twoją odpowiedź i proponuję ją edytować, aby zmienić wartość na przyszłość. Dzięki.
Jacobo de Vera,
@Jacobo W przyszłości możesz sam zaproponować edycję - wystarczy nacisnąć przycisk edycji poniżej odpowiedzi. Twoja zmiana zostanie szybko zatwierdzona przez kogoś. Dokonałem edycji dla Ciebie (sprawdź, czy jest poprawna). W każdym razie fajna odpowiedź @James! +1
Stefano Palazzo
1
@Stefano, dziękuję, nie zauważyłem opcji edycji.
Jacobo de Vera
Czy istnieje sposób, aby to działało w GDM na ekranie logowania?
2015