Po pierwsze, przepraszam za moją nieznajomość X i XKB; Próbowałem wspólnie zhakować rozwiązanie w nadziei, że uda mi się osiągnąć to, co chcę, bez konieczności szczegółowego zrozumienia.
Próbuję utworzyć mapę klawiatury XKB na Ubuntu 12.04, która pozwala mi ustalić, który z dwóch klawiszy Shift stanowi modyfikator Level2. W szczególności 4klucz powinien wywoływać tylko $
wtedy, gdy przytrzymane jest prawe przesunięcie, a nie lewe.
Moje dotychczasowe czytanie:
- http://www.charvolant.org/~doug/xkb/html/node5.html
- http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
- http://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html
- Dużo poszukiwań!
Próbowałem zdefiniować niestandardowy typ, a następnie odwołać się do niego jawnie w mapie symboli:
/usr/share/X11/xkb/types/mbfisher
:
default xkb_types "mbfisher" {
type "RIGHT_SHIFT" {
modifiers = None+Shift_R;
map[None] = Level1;
map[Shift_R] = Level2;
};
}
/usr/share/X11/xkb/symbols/mbfisher
:
default
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "mbfisher";
key <AE04> {
type= "RIGHT_SHIFT",
symbols[Group1]= [ 4, dollar ]
};
};
Następnie wybieram mapę za pomocą interfejsu GUI systemu Ubuntu Keyboard.
To oczywiście wyłącza klawiaturę alfanumeryczną oprócz 4klawisza, ale znak dolara można nadal wpisać dowolnym klawiszem Shift.
Jestem świadomy pisania ogromnego pytania z mnóstwem bezużytecznych informacji, więc zatrzymam się tutaj; proszę pytać o cokolwiek, co przeoczyłem.
Jakieś pomysły?