Для достижения низкоуровневой замены левой клавиши ctrl
и клавиши capsLock
я использовал xkbcomp
следующим образом:
Сначала я получил текущую раскладку клавиатуры:
xkbcomp $DISPLAY output.xkb
Затем я изменил 2 строки в output.xkb
с
<LCTL> = 62;
...
<CAPS> = 66;
на
<CAPS> = 62;
...
<LCTL> = 66;
, затем запустил
xkbcomp output.xkb $DISPLAY
, чтобы она вступила в силу. Он отлично работает в большинстве настольных приложений. Но проблема в vscode
. На самом деле, он также хорошо работает в обычном режиме vscode
, но когда я пытаюсь изменить сочетание клавиш в vscode
и мне нужно нажать новые клавиши для изменения сочетания клавиш, я нажимаю клавишу capsLock
на клавиатуре и vscode
думает, что я нажал ctrl
+capsLock
одновременно. Это не то, что я ожидал, vscode
не должен знать мою capsLock
клавишу, он должен знать только, что я нажал ctrl
клавишу, потому что XServer
должен только сказать vscode
, что я нажал ctrl
клавишу. Я думаю, что это потому, что моя конфигурация не закончена, чтобы vscode
все еще мог определить мою capsLock
клавишу. Кто-нибудь может сказать мне, как сделать полный обмен ключами ctrl
и capsLock
? xmodmap
не должен быть решением, так как он основан на xkbcomp
и имеет ограниченную функцию.
К сожалению, у меня то же самое, что и у вас, в VSCode, но я использую следующий обходной путь до дальнейшего уведомления:
xkbcomp $DISPLAY output_orig.xkb
xkbcomp $DISPLAY output_mod.xkb
Редактируйте файл output_mod.xkb в соответствии с моими идеями.
Если я обычно работаю в vscode, я использую
xkbcomp output_mod.xkb $DISPLAY
Если я редактирую сочетания клавиш, я использую раньше:
xkbcomp output_orig.xkb $DISPLAY
Внесите изменения с исходными ключами, а затем верните раскладку на перестановку клавиш:
xkbcomp output_mod.xkb $DISPLAY
Хорошо, это не очень умно, но эффективно для этой конкретной проблемы.
/// РЕДАКТИРОВАТЬ ///
После некоторых исследований кажется, что есть лучшее решение, особенно для поведения vscode:
В Терминале:
nano ~/.config/Code/User/settings.json
Вставить код:
{
"keyboard.dispatch": "keyCode"
}
Если код уже существует в этом файле:
{
"bla": "blub",
"keyboard.dispatch": "keyCode"
}
Перезапустите vscode.