LinuxCNC Documentation

SYNOPSIS

loadusr sendkeys config=s8t5, 16, t12

BESCHREIBUNG

Diese Komponente ist als Partnerkomponente für matrix_kb oder den hostmot2 7i73-Treiber gedacht. Sie akzeptiert die Ereigniscodes für das Hoch- und Runterdrücken der Tasten von einem dieser beiden Treiber und wandelt sie in Tastenanschläge um, die von einer virtuellen Tastatur gesendet werden.

Es ermöglicht auch die Erzeugung von Tastendrücken durch einzelne HAL-Pins.

Der Parameter config des HAL-Befehls loadusr legt fest, wie viele Scancodes unterstützt werden und wie viele einzelne Pins erstellt werden.
config=s16 würde die 16 Scancodes einer 4x4-Matrix unterstützen.
config=t10 würde 10 einzelne HAL-Pin-Trigger erzeugen.
config=s16t10 würde eine Instanz mit beiden oben genannten erstellen.

Mehrere durch Kommata getrennte Configs erzeugen mehrere Instanzen der Komponente. Die akzeptierten Codes können in dem Auszug aus den Linux-Headern hier eingesehen werden: https://wiki.linuxcnc.org/cgi-bin/wiki.pl?Scancodes

Die Komponente erfordert, dass der Benutzer Schreibrechte auf /dev/uinput hat, was standardmäßig nicht der Fall ist. Um Zugang zu gewähren für die Ausführung des folgenden:

  1. Erstellen Sie die Gruppe uinput und fügen Sie den LinuxCNC-Benutzer zu ihr hinzu:

    sudo groupadd -f uinput
    sudo gpasswd -a username uinput
  2. Erstellen Sie einen neuen Eintrag in .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. Starten Sie dann den Rechner neu. Sie können testen, ob es funktioniert hat:

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

Es ist möglich, die 7i73-Codes sowohl mit dem matrix_kb comp als auch mit diesem comp zu verknüpfen, so dass einige Codes HAL-Pins betreiben und einige Tastenanschläge senden. Ist die Option gegeben, so ist es VIEL besser, HAL-Pins für Dinge wie Joggen und Maschinensteuerung zu verwenden. Diese Komponente sollte eigentlich nur für die Texteingabe und GUI-Operationen verwendet werden.

Jeder Taste auf der Matrix ist ein Scan-Code zugeordnet. Der einfachste Weg, die Komponente zu konfigurieren, besteht darin, die Komponente zu laden und ein Halmeter zu öffnen, das sendkeys.0.current-event anzeigt. Notieren Sie den Code für jede physische Taste. (Wenn die Tasten keine konsistenten Ergebnisse liefern, müssen Sie wahrscheinlich den Wert des Pins matrix_kb.0.negative-logic umschalten und/oder die I/O-Pins invertieren).

Bearbeiten Sie dann die HAL-Datei, um jedem Scancode ein Schlüsselereignis zuzuordnen. Zum Beispiel:

setp sendkeys.0.scan-event-21 34

Um eine Taste so einzustellen, dass sie den Buchstaben "G" tippt, müssen die Tastenereignisse für jede physische Taste eingerichtet werden, bevor die Komponente aktiviert wird, aber nachdem die Komponente geladen wurde.

Um dies zu erreichen, gibt es einen Pin sendkeys.N.init, der auf "true" gesetzt werden sollte, sobald die zu sendenden Ereignisse für jeden Scancode und Pin eingerichtet wurden.

Um Tastenanschläge aus anderen Quellen zu generieren, beachten Sie bitte, dass ein keydown einfach 0xC0 & keycode and keyup is 0x80 & keycode ist.

PINS

sendkeys.N.keycode u32 in

Verbinden mit Scancode-Generator.

sendkeys.N.current-event s32 out

Zeigt den aktuellen Scancode ohne Keyup / Keydown-Markierungen.

sendkeys.N.init bit in

Setzt diesen Pin auf TRUE, sobald alle Ereignisparameter gesetzt sind.

PARAMETER

sendkeys.N.scan-event-MM u32 in

Weist die uinput-Ereigniscodes zu, die mit jedem Scancode verbunden sind.

sendkeys.N.pin-event-MM u32 in

Weist die mit jedem HAL-Bit-Pin verbundenen uinput-Codes zu.

BEISPIEL

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

#Strg + Leertaste von einem Trigger senden
net clear-errors parport.0.pin.00.in sendkeys.0.trigger-00 sendkeys.0.trigger-01

AUTOR

Andy Pugh

LIZENZ

GPL-2.0+