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.


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ę.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.