После замены Ctrl и caps в xmodmap, как мне заставить Ctrl работать правильно для комбинаций с несколькими модификаторами?

После замены Ctrl и caps в xmodmap, как мне заставить Ctrl работать правильно для комбинаций с несколькими модификаторами?

Я поменял местами Left Ctrlи Caps Lockсоздал ~/.Xmodmap

keycode 66 = Control_L
keycode 37 = Caps_Lock
clear Lock
clear Control
add Lock    = Caps_Lock
add Control = Control_L Control_R

затем запускается $ xmodmap ~/.Xmodmap. Нажатие Left Ctrlклавиши работает как и ожидалось, переключая Caps Lock. Нажатие Caps Lockклавиши работает в целом для простых сочетаний клавиш, таких как Ctrl+N.

Однако, когда требуется несколько клавиш-модификаторов (например, Alt+ Ctrl+ I), это работает только если я Altсначала нажимаю клавишу. Если я Caps Lockсначала нажимаю клавишу, эффекта нет.

Я могу сбросить раскладку клавиатуры с помощью $ setxkbmap -layout us, и вышеуказанное сочетание клавиш будет работать нормально. Если я $ xmodmap ~/.Xmodmapснова запущу, у меня будет та же проблема.

Я также обнаружил, что даже для комбинаций с одним модификатором мне приходится удерживать клавишу Caps Lockна долю секунды дольше, чем я привык с обычной Ctrlклавишей, чтобы она зарегистрировалась. Вероятно, это порядка 0,01 секунды, но это достаточно заметно, так как неверные сигналы отправляются один раз из десяти.

Также, если я меняю Ctrlи Caps Lockиспользую $ setxkbmap -layout us -option 'ctrl:swapcaps', я больше не замечаю проблему с несколькими модификаторами. Однако я все еще хочу решить проблему с решением xmodmap, так как скоро получу новую клавиатуру, и мне нужно будет поменять ее Ctrlс другой клавишей.

=EDIT= Я попробовал другую клавиатуру (Das Keyboard) и, похоже, вторая проблема, связанная с необходимостью удерживать клавишу Caps Lockна долю секунды дольше, чем на обычной клавиатуре, Ctrlвероятно, связана с аппаратной проблемой оригинальной клавиатуры (проводная клавиатура Apple Aluminium). Однако первая проблема с несколькими модификаторами все еще присутствует.

=EDIT= Я тестировал разные сочетания клавиш в xev. Удерживание Altи последующее нажатие Caps Lockклавиши приводит к keycode 66 (keysym 0x0, NoSymbol), в отличие от keycode 66 (keysym 0xffe3, Control_L)неудержания Alt.

решение1

По-видимому, приведенный выше код xmodmapнетдостаточно поменять местами клавиши Ctrl+ Lи Caps Lock.

keycode 66 = Control_L

должно быть

keycode 66 = Control_L Control_L

чтобы разрешить правильную функциональность, когда Ctrlнажато после другого модификатора. Я не могу найти никаких хороших ссылок на это решение, новидимовторая запись относится к Shift+ Key. Я не уверен, почему здесь это также относится к Alt+ Key.

(Кстати, другие источники утверждают, что столбцов может быть до восьми, а не шесть, как указано в ссылке.)

Связанный контент