LinuxCNC Documentation

СИНТАКСИС

loadusr sendkeys config=s8t5, 16, t12

ОПИС

Цей компонент призначений як партнерський компонент для matrix_kb або драйвера hostmot2 7i73. Він приймає коди подій натискання та відпускання клавіш від будь-якого з них і перетворює їх на натискання клавіш, що надсилаються з віртуальної клавіатури.

Це також дозволяє генерувати натискання клавіш окремими контактами HAL.

Параметр config команди loadusr HAL визначає, скільки сканованих кодів буде підтримуватися і скільки окремих контактів буде створено.
config=s16 підтримуватиме 16 сканованих кодів матриці 4x4.
config=t10 створить 10 окремих тригерів контактів HAL.
config=s16t10 створить один екземпляр з обома вищезазначеними параметрами.

Кілька конфігурацій, розділених комами, створять кілька екземплярів компонента. Прийняті коди можна побачити у витягу із заголовків Linux тут: https://wiki.linuxcnc.org/cgi-bin/wiki.pl?Scancodes

Компонент вимагає від користувача права на запис до /dev/uinput, які за замовчуванням недоступні. Щоб надати доступ, виконайте такі дії:

  1. Створіть групу uinput та додайте до неї користувача LinuxCNC:

    sudo groupadd -f uinput
    sudo gpasswd -a username uinput
  2. Створити новий запис у .B/etc/udev/rules.d/99-input.rules

    sudo echo KERNEL=="uinput", GROUP="uinput", MODE:="0660" | sudo tee /etc/udev/rules.d/88-input.rules
  3. Перезавантажте машину. Ви можете перевірити, чи це спрацювало:

    ls -l /dev/uinput
    crw-rw---- 1 root uinput 10, 223 Nov 11 15:35 /dev/uinput

Можна пов’язати коди 7i73 як з matrix_kb comp, так і з цим comp, щоб деякі коди керували контактами HAL, а інші надсилали натискання клавіш. Якщо є така можливість, набагато краще використовувати контакти HAL для таких операцій, як переміщення та керування машиною. Цей компонент слід використовувати лише для введення тексту та операцій з графічним інтерфейсом користувача.

Кожній клавіші на матриці присвоюється код сканування. Найпростіший спосіб налаштувати компонент — завантажити його та відкрити halmeter, що відображає sendkeys.0.current-event. Запишіть код для кожної фізичної клавіші. (Якщо клавіші не дають стабільних результатів, ймовірно, вам потрібно перемкнути значення виводу matrix_kb.0.negative-logic та/або інвертувати виводи io).

Then відредагуйте файл HAL, щоб призначити ключову подію кожному скан-коду. Наприклад:

setp sendkeys.0.scan-event-21 34

Щоб налаштувати кнопку на введення літери "G", події натискання клавіш, пов’язані з кожною фізичною клавішею, потрібно налаштувати до активації компонента, але після його завантаження.

Для досягнення цього існує PIN-код sendkeys.N.init, який слід встановити на "true" після налаштування подій, що надсилаються для кожного скан-коду та PIN-коду.

Щоб генерувати натискання клавіш з інших джерел, зверніть увагу, що keydown — це просто 0xC0 & keycode, а keyup — 0x80 & keycode.

ПІНИ

sendkeys.N.keycode u32 in

Підключитися до генератора скан-кодів.

sendkeys.N.current-event s32 out

Показує поточний скан-код без маркерів натискання клавіші.

sendkeys.N.init bit in

Встановіть цей контакт у значення TRUE (ІСТИНА), коли всі параметри події будуть налаштовані.

ПАРАМЕТРИ

sendkeys.N.scan-event-MM u32 in

Призначте коди подій uinput, пов’язані з кожним скан-кодом.

sendkeys.N.pin-event-MM u32 in

Призначте коди uinput, пов’язані з кожним виводом біта HAL.

ПРИКЛАД

loadusr -W sendkeys config=16t2
net scancodes hm2_7i73.0.0.keycode => sendkeys.0.keycode

setp sendkeys.0.scan-event-00 34 # Key G
setp sendkeys.0.scan-event-01  2 # Key 1
setp sendkeys.0.scan-event-02  3 # Key 2
setp sendkeys.0.scan-event-03  4 # Key 3
setp sendkeys.0.scan-event-04 50 # Key M
setp sendkeys.0.scan-event-05 05 # Key 4
setp sendkeys.0.scan-event-06 06 # Key 5
setp sendkeys.0.scan-event-07 07 # Key 6
setp sendkeys.0.scan-event-08 31 # Key S
setp sendkeys.0.scan-event-09  8 # Key 7
setp sendkeys.0.scan-event-10  9 # Key 8
setp sendkeys.0.scan-event-11 10 # Key 9
setp sendkeys.0.scan-event-12 20 # Key T
setp sendkeys.0.scan-event-13 11 # Key 0
setp sendkeys.0.scan-event-14 52 # Key Dot
setp sendkeys.0.scan-event-15 14 # Backspace
setp sendkeys.0.pin-event-00 29 # Left Ctrl
setp sendkeys.0.pin-event-01 57 # Space
setp sendkeys.0.init 1

#Надіслати Ctl + пробіл з одного тригера
net clear-errors parport.0.pin.00.in sendkeys.0.trigger-00 sendkeys.0.trigger-01

АВТОР

Енді П’ю

ЛІЦЕНЗІЯ

GPL-2.0+