Переназначить комбинацию клавиш на другую комбинацию, например, Super + Ctrl + Shift + J -> Ctrl + Shift + Left

11

Я хочу реализовать дополнительный слой ключей, чтобы я мог получить доступ к не алфавитно-цифровым ключам, не перемещая мои запястья.

Я использовал Autokey для этой цели, но опыт был неудовлетворительным: он имел случайные лаги и позволял исходным нажатиям клавиш проскальзывать в определенные приложения.

Поэтому мне нужно решение низкого уровня.

Лолмаус - Андрей Михайлов
источник
для этого вам может потребоваться создать собственный драйвер виртуального ввода, который, как я предполагаю, будет написан на C
Amias
@ Амиас, не могли бы вы уточнить?
lolmaus - Андрей Михайлов
у вас может быть драйвер xinput, который запускает обычный драйвер клавиатуры, но интерпретирует нажатия клавиш перед передачей их в xorg, это даст вам полный контроль, но это будет довольно сложная пара дней для программиста на Си.
Amias

Ответы:

10

Попробуйте комбинацию xbindkeys и xvkbd . xbindkeys прослушивает ключи и отправляет перевод в xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Откройте .xbindkeysrc в вашем любимом редакторе. Я прокомментировал все остальное, но это хорошо, если есть необходимость.

Чтобы проверить это, я попытался сопоставить Ctrl +; до Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Я ожидаю, что вы после чего-то вроде этого

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Сохраните файл, затем запустите xbindkeys

Чтобы перезагрузить любые изменения конфигурации, я убил процесс xbindkeys и перезапустил.

Синтаксис xbindkeys

Я разработал комбинацию клавиш, используя графический интерфейс для xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

После того, как вы запустите это, нажмите Get Key для комбинации, чтобы поместить ее во вторую строку вашего файла .xbindkeysrc.

синтаксис xvkbd

Из руководства:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

Мне нравится слышать, как это работает и подходит ли эта комбинация для ваших целей. Выглядит хорошо как клавишник, но не обязательно бегун макроса.

Марк Хьюитт
источник
Привет, @MarkHewitt! Большое спасибо за подробный ответ! К сожалению, это не работает для меня очень хорошо: оригинальное нажатие клавиш продолжает проходить, что разрушает все это.
lolmaus - Андрей Михайлов
0

Я думаю, что вы можете найти решение здесь (потому что Xorg - это низкоуровневый уровень ...): https://wiki.archlinux.org/index.php/Keyboard_configuration_in_Xorg

РЕДАКТИРОВАТЬ: для того, что я понял, вам нужно добавить опцию lv3:win_switchв вашем файле .conf

mattia.b89
источник
1
Мне нужен конкретный пример.
lolmaus - Андрей Михайлов