СИНТАКСИС
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, які за замовчуванням недоступні. Щоб надати доступ, виконайте такі дії:
-
Створіть групу uinput та додайте до неї користувача LinuxCNC:
sudo groupadd -f uinput sudo gpasswd -a username uinput
-
Створити новий запис у .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
-
Перезавантажте машину. Ви можете перевірити, чи це спрацювало:
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+