Перейти к содержанию
odrfid-io: ввод UID без смены раскладки

odrfid-io: ввод UID без смены раскладки

Как вводить UID из ODRFID-M/N/E в активное поле, если строка содержит буквы и важна текущая раскладка клавиатуры.

odrfid-io нужна для ODRFID-M, ODRFID-N и ODRFID-E, когда номер карты нужно вводить в активное поле, как в режиме клавиатуры HID, но строка содержит буквы. Например, UID в формате HEX может содержать A–F: при вводе штатной HID-клавиатурой результат зависит от выбранной раскладки. Программа читает UID через виртуальный COM-порт CDC и вводит строку средствами компьютера. Менять раскладку перед каждым считыванием не требуется.

Скачать готовую сборку для Windows, Linux или macOS. Исходный код и полная инструкция — в репозитории odrfid-io.

Как пользоваться

  1. Подключите считыватель по USB и найдите его CDC-порт. Закройте ODRFIDKit, терминал и другие программы, которые используют этот порт.
  2. Скачайте сборку для своей ОС и запустите программу с параметром -port. Например, в Linux: ./odrfid-io -port /dev/ttyACM0 -mode hex, в Windows: odrfid-io.exe -port COM3 -mode hex.
  3. Дождитесь сообщения ожидание UID, поставьте курсор в нужное поле и поднесите карту. По умолчанию программа вводит строку и нажимает Enter.

Режим hex вводит полный UID в HEX, включая буквы A–F, если они есть. Режим id по умолчанию вводит только цифры: длину UID в байтах и его десятичное значение. Также доступны обратный порядок байтов, десятичные форматы и собственная строка через -format. Все параметры и примеры приведены в README проекта. Чтобы не нажимать Enter после UID, добавьте -enter=false.

Программа при запуске отключает клавиатуру считывателя командой AT+H0, настраивает выдачу полного UID через CDC и обрабатывает метки длиной от 4 до 10 байт. После остановки клавиатура считывателя остаётся отключённой. Чтобы включить её снова, отправьте AT+H1 через последовательный порт.

В Linux нужен сеанс X11. Стандартный способ ввода вставляет строку через буфер обмена и заменяет его текстовое содержимое; для этого нужен xclip или xsel. Режим -input=type не использует буфер обмена, но буквы в нём могут зависеть от раскладки. Нативный ввод через Wayland не поддерживается. В macOS разрешите терминалу управление компьютером в настройках универсального доступа.