Использование Usb клавиатуры отдельно в X

Мне не удалось настроить SSH, однако я нашел инструмент ssocks, подходящий для моих нужд, хотя ему немного не хватает шифрования.

  1. Скачайте ssocks с Sourceforge по ссылке. Затем выполните:

    tar -zxvf ssocks*.tar.gz
    cd ssocks-*; ./configure
    make -j4
    
  2. Теперь в каталоге ssocks-*/src/ должны быть клиент rcsocks и сервер rsscoks. Скопируйте rssocks на машину B

  3. Выполните следующее:

    на машине A:

    ./rcsocks -p -l 1080

    на машине B:

    . /rssocks --socks :

    Заполните и в соответствии с необходимостью.

  4. Теперь socks-прокси доступен по адресу 127.0.0.1:1080 на машине A.

2
07.02.2017, 10:42
1 ответ

1) Как настроить X на игнорирование клавиатуры

Используйте lsusb, чтобы найти ID вашего сканера штрих-кодов (в формате 0123:4567). Создайте или измените файл xorg.conf (обычно в /etc/X11/). Добавьте секцию InputClass с идентификатором, который вы только что нашли:

Section "InputClass"
    Identifier "barcode"
    MatchUSBID "0123:4567"
    Option "Ignore" "true"
EndSection

Перезапустите X, проверьте в Xorg.log, что ваше устройство распознано этой секцией и игнорируется.

2) Преобразование нажатий клавиш в ASCII (или другие) коды является довольно сложной задачей, позволяющей учитывать различные раскладки клавиатуры, неработающие клавиши, настройки и т.д. Теперь, когда вы отключили уровень преобразования X, вы можете получать события нажатия и отпускания клавиш от соответствующего устройства /dev/input/eventX. Номер может меняться; для вашего считывателя штрихкодов будет существовать симлинк в /dev/input/by-id/, который не меняется. Поэтому используйте симлинк.

Вы можете запустить evtest на этом файле, чтобы посмотреть, какие события он генерирует. Их отображение для вашего считывателя штрих-кодов будет простым, поэтому достаточно будет поиска в таблице от keysym до ASCII-кода. Вы можете обработать эти события в своей собственной программе, см. источник evtest или, например, здесь. Вы также можете написать небольшую программу на C, которая просто читает это устройство и выдает ASCII на stdout, а затем интегрировать ее в ваше приложение, используя pipe и т.д.

"Сопоставить его с устройством потока ASCII" невозможно, такие устройства не существуют в ядре Linux.

3) Установка разрешений

Вам нужно написать пользовательское правило udev, чтобы установить разрешения для вашего устройства ввода. SUBSYSTEM должен соответствовать input, ACTION должен соответствовать ADD, среда ENV должна содержать информацию, соответствующую устройству (используйте udevadm, чтобы узнать подробности), и вы можете установить OWNER, GROUP и MODE для вновь созданного устройства /dev/input/eventX. Вот несколько общий howto, я не смог найти более конкретного. Поищите в Google более точные руководства.

4
27.01.2020, 21:59

Теги

Похожие вопросы