Po przeczytaniu i zdobyciu informacji. Wydaje się, że problem polega na tym, że musisz usunąć modyfikatory przed dokonaniem zmiany mapowania.
Na odpowiedź:
Po zmianie ustawień moja xmodmap
wygląda jak:
xmodmap: do 4 kluczy na modyfikator, (kody klawiszy w nawiasach):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Alt_L (0xcc), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Mode_switch (0x42), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce)
mod5
Dochodzenie Mode_switch
prowadzi nas do wniosku, że Caps_Lock
został pomyślnie zmapowany:
[smalltalk@localhost ~]$ xmodmap -pke | egrep -e '(Mode_switch)'
keycode 66 = Mode_switch NoSymbol Mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch
Teraz zmień fragment fragmentu stron podręcznika:
keycode NUMBER = KEYSYMNAME ...
The list of keysyms is assigned to the indicated keycode (which
may be specified in decimal, hex or octal and can be determined
by running the xev program). Up to eight keysyms may be
attached to a key, however the last four are not used in any
major X server implementation. The first keysym is used when
no modifier key is pressed in conjunction with this key, the
second with Shift, the third when the Mode_switch key is used
with this key and the fourth when both the Mode_switch and
Shift keys are used.
Następująca konfiguracja działa, ale musisz trzymać Caps_Lock podczas używania i, j, k, l (dokładnie tak, jak zostało to napisane na stronach man):
Edytować vim ~/.Xmodmap
:
! make Capslock the "Mode_switch" key
clear Lock
! All Mod must be cleared
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
! clearning current Caps_Lock assigment and assigning it new one
keycode 66 =
keycode 66 = Mode_switch
! setting all the modification keys
add Mod1 = Alt_L Alt_R Meta_L
add Mod2 = Num_Lock
add Mod3 = Mode_switch
add Mod4 = Super_L Super_R Hyper_R
! Clear must be done before configuring it
keycode 31 =
keycode 44 =
keycode 45 =
keycode 46 =
! Configuration (first column normal type, second with shift and second with Mod_switch)
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
! Clearing the arrow keys and some functional keys like home
keycode 111 =
keycode 113 =
keycode 114 =
keycode 116 =
keycode 112 =
keycode 117 =
Teraz na wielkie pytanie:
Jak sprawić, by klawisze i, j, k, l działały podczas działania Caps_Lock?
Prawdopodobnie będziesz musiał dokonać zmian xkb
, które muszę przemyśleć.
Edytować
Tak, możesz. Zorientowałem się.
Uwaga: dotyczy to wszystkich klawiatur, wszystkich układów, więc jest dobry do testowania. Jeśli chcesz to zrobić przez xkb
właściwie musisz stworzyć swój własny układ i mieć grupę1 i grupę2 + zrobić mapowanie.
Poniżej znajduje się hack idealny do testowania klawiatury (-ów) (nie zapomnij wykonać kopii zapasowej ../basic
plik!):
Ostrzeżenie dotyczy to wszystkich klawiatur, wszystkich wariantów.
Edytuj plik: sudo vim / usr / share / X11 / xkb / compat / basic
# Add Caps_Lock to virtual modifiers
virtual_modifiers NumLock,AltGr,Caps_Lock;
# change FROM:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= AltGr;
action= SetGroup(group=+1);
};
# TO:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= Caps_Lock;
action= LockGroup(group=+1);
};
# change from
group 2 = AltGr;
TO:
group 2 = Caps_Lock;
Uwaga: Jeśli masz wiele układów, może to przeszkadzać.
$ xmodmap -e 'keycode 111='