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

Я поменял местами Левый 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 , вероятно, проблема с оригинальной клавиатурой (проводная клавиатура Aluminium Apple). Тем не менее, первая проблема с несколькими модификаторами все еще присутствует.

= РЕДАКТИРОВАТЬ = Я тестировал различные нажатия клавиш в xev. Удержание Alt и затем нажатие клавиши Caps Lock приводит к keycode 66 (keysym 0x0, NoSymbol), в отличие от keycode 66 (keysym 0xffe3, Control_L), когда Alt не удерживается .

4
задан 2 July 2018 в 23:14

1 ответ

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

keycode 66 = Control_L

должно быть

keycode 66 = Control_L Control_L

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

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

0
ответ дан 2 July 2018 в 23:14

Другие вопросы по тегам:

Похожие вопросы: