Używanie setxkbmap do prostego mapowania (podobnie do xmodmap)

13

Napotkałem pewne problemy po ponownym mapowaniu klawiatury za pomocą xmodmap: ustawienia są resetowane losowo po 2-20 minutach po zastosowaniu. Googled to, ale bez pomocy: coś je resetuje, ale wszystkie wzmianki odnoszą się do xfce, podczas gdy ja jestem pod zwykłym Ubuntu 14.04 z jednością.

Widziałem frazy typu „użyj xkb, zapomnij xmodmap”, ale wciąż nie mam pojęcia, jak to zrobić. Jest to albo sklasyfikowane, albo bardzo skomplikowane, ponieważ ilość informacji na ten temat jest znacznie mniejsza niż w przypadku metody xmodmap.

Oto moja lista dostosowań:

xmodmap -e "keycode 84 = Down"
xmodmap -e "keycode 79 = Home"
xmodmap -e "keycode 80 = Up"
xmodmap -e "keycode 83 = Left"
xmodmap -e "keycode 85 = Right"
xmodmap -e "keycode 87 = End"
xmodmap -e "keycode 90 = Insert"
xmodmap -e "keycode 91 = Delete"
xmodmap -e "keycode 89 = Next"
xmodmap -e "keycode 81 = Prior"

gdzie kody klawiszy odpowiadają kluczom na klawiaturze numpad, przy czym numlock = off (w zasadzie zastępuję KP_Del przez Delete, KP_Home przez Home itp. - nie pytaj dlaczego))

Czy ktoś może pomóc znaleźć sposób, aby to zrobić za pomocą xkb - przynajmniej jednej z linii? A gdzie znaleźć „nazwy” kluczy dla innych, abym mógł zrobić resztę na przykładzie?

Den Drobiazko
źródło
5
Tak. Miał dokładnie ten sam problem. Zobacz tutaj: rlog.rgtti.com/2014/05/01/... i askubuntu.com/questions/422650/… . Jeśli potrafisz znaleźć sposób korzystania xkbbez przepisywania plików systemowych, napisz odpowiedź tutaj ... otrzymasz nagrodę w postaci ponad miliardów głosów pozytywnych.
Rmano
Wow - w końcu przewodnik mapowania xkb, który wyjaśnia wszystko ... Ale nie widzę nic w mapowaniu Home, Delete i Up- i Down arows. Zawsze chodzi o greckie lub hiszpańskie litery. Jak dotąd poszedłem w drugą stronę - próbując powstrzymać system przed przesłonięciem moich ustawień Xmodmap (przepis nr 3 stąd: programiroiro.blogspot.com/2013/03/... )
Den Drobiazko
1
Zły pomysł - po tym przełączanie układu nie jest możliwe (
Den Drobiazko

Odpowiedzi:

4

Możesz podążać za ogólnym pomysłem przedstawionym w mojej odpowiedzi na podobny problem ; jeśli nadal chcesz przełączać układ (choć nadal dość zepsuty ), powinieneś zdefiniować nowy układ lub wariant .

Zauważ, że szablon do kopiowania i modyfikowania do edycji klawiatury jest nieco trudny do znalezienia. Na przykład w mojej klawiaturze geometria to „pc105”; jest to zdefiniowane w /usr/share/X11/xkb/symbols/pc. Jeśli przyjrzysz się temu, będzie to obejmować :

[...]
key <SPCE> {        [        space          ]       };

include "srvr_ctrl(fkey2vt)"
include "pc(editing)"
include "keypad(x11)"

key <BKSP> {        [ BackSpace, BackSpace  ]       };
[...]

Klawiatura jest zdefiniowana w pliku /usr/share/X11/xkb/symbols/keypad

[...] 
default  partial hidden keypad_keys
xkb_symbols "x11" {
   include "keypad(operators)"

   key  <KP7> {        [  KP_Home,     KP_7    ]       };
   key  <KP8> {        [  KP_Up,       KP_8    ]       };
[...]

W przypadku nazw symboli kluczowych (klawisze) najlepszym miejscem do wyszukiwania jest plik /usr/include/X11/keysymdef.h; może być konieczne zainstalowanie pakietów programistycznych, aby go zainstalować (lub zainstalować, instalując x11proto-core-dev):

[...]
/* Cursor control & motion */

#define XK_Home                          0xff50
#define XK_Left                          0xff51  /* Move left, left arrow */
#define XK_Up                            0xff52  /* Move up, up arrow */
[...]

nazwa klucza to ta, którą kiedyś usunąłeś „XK_”.

Rmano
źródło