xbindkeys на одной клавиатуре?

xbindkeys на одной клавиатуре?

У меня текущая настройка:

  • Одна клавиатура PS2
  • Одна USB-клавиатура

Затем я использую это:

xinput --create-master SecondKeyboard

xinput --reattach "Keyboard Id" "Master Id"

чтобы разделить их.

Я думал, что могу просто создать собственную раскладку и вуаля, одна клавиатура для письма и другая для сочетаний клавиш, но потом обнаружил, что xkb не позволяет создавать раскладки, которые нажимают несколько клавиш (например, нажимая capslockи выполняя ctrl+ alt+ f4).

Поэтому я подумал, что xbindkeys должен работать только на одной из клавиатур, поскольку у них разные идентификаторы. Могу ли я это сделать?

решение1

Краткое описание различных задействованных уровней:

Ваша клавиатура генерирует скан-коды. Они сопоставляются слоями ввода ядра с событиями кодов клавиш на /dev/input/eventX. Драйвер X evdevпринимает эти события и транслирует их в символы клавиш. Затем расширение XInput делает все события от подчиненных устройств виртуальной базовой клавиатуры доступными как обычные события X, в то время как другие события доступны только как события XInput.

Итак, у вас есть следующие варианты:

1) Настройте пользовательское сопоставление сканкода и кода клавиши. Эти сопоставления относятся к каждому устройству, так что это на самом деле возможно, но это делается через IOCTL, и, похоже, для этого нет готовых инструментов, кромеhwdbв udev. Затем вы можете использовать новые клавиши в xkb. Обе клавиатуры сохраняются как основные клавиатуры.

2) Расширьте, xbindkeysчтобы понимать события XInput, чтобы вы могли использовать его для привязки событий с неосновной клавиатуры. Это потребует программирования, но должно быть сравнительно просто. В этом случае отделите одну клавиатуру от основной клавиатуры, как вы уже сделали.

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