Я хочу подключить два USB-клавиатуры к одному компьютеру (Linux). Затем я хочу открыть 2 консоли # 1 и # 2 и выполнить один процесс на каждом из них. Затем я хочу получить ввод с клавиатуры # 1 на консоли №1 и ввода с клавиатуры # 2 на консоли # 2, то есть каждая клавиатура подает вход в конкретный процесс. Как это можно достичь? Предположим, что код написан на C. Спасибо!
Чтобы программа считывала ввод с определенной клавиатуры, вы можете заставить ее считывать необработанные события с правильного устройства ввода. Устройства ввода (с типичной настройкой udev) /dev/event[0-9]*
, и вы можете узнать, какой из них вы используете через /dev/input/by-id/*-kbd
и /dev/input/by-path/*-kbd
. Посмотрите by-id
чтобы он соответствовал устройству по его идентификации (поставщику и серийному номеру) или by-path
чтобы соответствовать ему через порт USB, в который он подключен.
Вы можете настроить параметры udev, которые генерируют имена в /dev/*/by-*/
. Вы можете найти информацию, которую udev имеет в своем распоряжении, запустив udevadm info -a -n /dev/input/event42
(вы также можете сказать udev использовать вывод из какой-либо другой программы, если у вас есть программа, которая сообщает больше информации о Устройство). Если у вас возникли проблемы с разграничением между двумя клавиатурами, посмотрите на udevadm info
для отличительных характеристик. Вы также можете запустить udevadm test /class/input/event42
чтобы узнать, какие правила udev в настоящее время применяет.