Я поменял местами 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.
(Кстати, другие источники утверждают, что столбцов может быть до восьми, а не шесть, как указано в ссылке.)