Вопрос или проблема
Возможно ли различать различные USB-устройства, которые в остальном идентичны, с помощью xbindkeys
?
У меня есть две идентичные клавиатуры на одном компьютере, и я хотел бы, чтобы одна и та же клавиша ведла себя по-разному в зависимости от того, с какой клавиатуры… предположительно, по USB-идентификатору каким-то образом, но xev
не показывает этой информации.
Этот вопрос сведен к более короткому изначальному сообщению здесь, с подробным описанием случая использования:
https://forums.linuxmint.com/viewtopic.php?p=2551460#p2551460
.
Ответ или решение
К сожалению, стандартные инструменты Linux, такие как xbindkeys
и xev
, не позволяют напрямую различать идентичные USB-устройства, такие как клавиатуры, поскольку они не отображают уникальные идентификаторы устройств. Тем не менее, вы можете использовать другие методы для достижения вашей цели. В этой статье рассматривается, как можно различать две одинаковые клавиатуры по их USB-идентификатору и настроить их клавиши по-разному, в зависимости от их источника.
1. Установите необходимые инструменты
Для начала убедитесь, что у вас установлены необходимые пакеты. Вам понадобятся:
xbindkeys
для переназначения клавишxbindkeys-config
для графической настройкиxbindkeys
evtest
для получения информации о событиях устройствshowkey
для мониторинга клавиатурных событий
Вы можете установить их с помощью вашего пакетного менеджера. Например, в Ubuntu вы можете запустить:
sudo apt-get install xbindkeys xbindkeys-config evtest
2. Найдите идентификаторы USB
Чтобы различить клавиатуры по их USB-идентификатору, используйте команду lsusb
. Запустите следующую команду в терминале:
lsusb
Эта команда выведет список всех USB-устройств, подключенных к вашему компьютеру. Найдите строки, которые соответствуют вашим клавиатурам. Обратите внимание наBus и DeviceNum, чтобы отличить их.
3. Определите события клавиш
Следующий шаг — использование evtest
для получения информации о нажатиях кнопок на каждой клавиатуре. Запустите evtest
:
sudo evtest
Выберите соответствующее устройство клавиатуры. После этого программа будет выводить события, когда вы нажимаете клавиши на выбранной клавиатуре. Обратите внимание на коды событий и идентификаторы клавиш.
4. Настройка xbindkeys для каждой клавиатуры
Создайте файл конфигурации для xbindkeys
. Обычно это файл ~/.xbindkeysrc
. Если он не существует, создайте его:
touch ~/.xbindkeysrc
Теперь вы можете указать свои назначения клавиш. Для этого вам нужно будет использовать комбинации клавиш и их коды, полученные на предыдущем шаге.
Пример записи:
# Клавиша "A" на первой клавиатуре
"your-command"
m:0x10 + c:30
# Клавиша "A" на второй клавиатуре
"another-command"
m:0x20 + c:30
Здесь m:0x10
и m:0x20
могут представлять разные идентификаторы ваших клавиатур. Вам нужно будет заменить их на те, которые соответствуют вашим клавиатам.
5. Запустите xbindkeys
Теперь вы можете запустить xbindkeys
, чтобы активировать настройки:
xbindkeys
Вы также можете добавить xbindkeys
в автозагрузку вашего рабочего стола, чтобы он запускался автоматически при каждом входе в систему.
Заключение
Используя lsusb
и evtest
, вы можете различать идентичные USB-клавиатуры и переназначать клавиши в зависимости от источника. Эта методология предоставляет гибкие возможности настроек для пользователей, требующих индивидуальные решения для разных устройств.
Следуя этим шагам, вы сможете добиться необходимого функционала, настроив каждую клавиатуру по-разному, что может значительно улучшить ваш рабочий процесс.