Frage

Kurzversion von dem, was ich erreichen will : Ich habe ein Fußpedal (INFINITY-IN-USB-1, wenn das von Interesse), die als generisches HID-Gerät implementiert ist, und ich möchte es als Kontrolle und alt-Tasten auf linux verhalten. Ich bin auf der Suche nach etwas auf der Ebene, auf X, das heißt nicht nur einzelne Programme.

Längere Version : Ich habe dieses Setup in Windows XP arbeitet durch den Aufruf dll RegisterRawInputDevices und GetRawInputData und in einem versteckten Fenster auf den Eingang zu hören. Alle mit einem recht einfach Autohotkey Skript (kann hier posten, wenn jemand interessiert ist). Der Punkt ist, gibt es keine Notwendigkeit für zusätzliche Fahrer, etc .; nur der nativen Windows-DLL benötigt.

Ich möchte dieses Setup auf Linux arbeiten (insbesondere Gnome unter Ubuntu, aber ich verwende gelegentlich andere Distro / Window-Manager, so Lösung auf dem Niveau von X geschätzt). Das Fußpedal nicht registrieren sich nicht als Tastatur oder sogar einen Joystick, sondern als ein HID-Gerät mit UsagePage 12, Verwendungszweck 3. Ich stelle fest, dass die neueste Ubuntu kann erkennen und die Lieblings Tasten auf dem Microsoft Natural Keyboard verwenden, die auch als HID-Gerät registrieren *. Ich verwende diese Schlüssel unter Windows mit der gleichen Methode, wie ich das Fußpedal (das heißt ohne die mitgelieferte Software) verwenden. Also gehe ich davon aus, dass dieses Pedal Sache auf Linux arbeiten kann als gut, aber die Frage ist, wie?

[Ich bin neu in der unteren Ebene Sachen auf Linux, so seien Sie großzügig mit Links zu Einführung oder ein Tutorial, wann immer anwendbar.]

* Für diejenigen, die nicht in die wissen, die Microsoft Natural Keyboard-Register sowohl als normale Tastatur und einer generischen HID-Gerät. Ohne eine Anwendung (wie die gebündelte Anwendung) zu wissen, wie die HID-Eingabe zu interpretieren, werden die regulären Tasten funktionieren aber die Lieblings Tasten und die speziellen Funktionstasten sind nutzlos.


Um zu klären, Linux ist nicht zu sehen, die Pedale werden als Eingabe. Er tut das USB-Gerät erkennen, aber xev gibt keinen Ausgang für Pedal drückt. Ich habe Berichte von Menschen gesehen succesefully das Pedal unter WINE für die Transkription Software, aber das muss in einer Windows-Art und Weise arbeitet, und nicht das, was ich will (was das Pedal wie eine Tastatur auf alle nativen Linux-Anwendungen aussehen macht). Ich frage mich, ob einige niedrigen Niveau Linux Tastaturtreiber benötigt wird?


Hier einige weitere Informationen: Wenn ich dieses Problem in der Klemme

cat /dev/usb/hiddev0

(dev/usb/hiddev0 ist mein Pedal), erhalte ich rohe Codes auf mein Pedal drückt entsprechen. Das ist ein Anfang. Ich weiß, was jene Rohcode bedeutet: binär, 0001, 0010, 0100 zu jedem Pedal entspricht, bzw., und Kombination von Pedal drückt sendet Kombination dieser binären Zahl und gibt der Pedaltriggereingang, was auch immer Pedal noch gedrückt wird (wenn alle Pedal oben ist, wird 0000 gesendet).

Wie ich X die rohen Codes dev/usb/hiddev0 und übersetzt in vielleicht einen speziellen Schlüsselcode bekommen zu hören, damit ich sie mit xmodmap oder etwas abbilden kann?

War es hilfreich?

Lösung

Sie wollen uinput. Sie werden auf Ihrem / dev / usb / hiddev0 hören und dann neue Ereignisse erstellen, die Sie auf /dev/input/uinput auszusenden werden.

Dies erklärt es und gibt ein kleines Tutorial: Mit uinput Treiber in Linux-2.6. x Benutzereingabe senden { das die eInfochips ist ‚Armaturenbrett‘ Veröffentlichung Ausgabe Januar 2007 ‚Tipp des Monats‘ Artikel erwähnt auf diese archivierten Seite }.

Andere Tipps

Zeigt das Gerät in / dev / input up? wenn es die „evdev“ X-Treiber, verwenden Sie es hook up genauso wie Sie für eine Tastatur oder Maus tun würde.

Sie sollten untersuchen lircd. Er interpretiert Eingabe von der Fernbedienung. Einige unterstützten Fernbedienungen präsentieren sich anscheinend als generische HID-Geräte, so können Sie in der Lage sein, das Gerät zu bekommen, um lircd zu sprechen.

Das gleiche Problem hier, aber mit speziellen Tasten auf einer drahtlosen Tastatur. Ich fühle deinen Schmerz.

Wie auch immer, versucht, dies zur Arbeit zu kommen, heren meine Methode:

  1. sleep 10; killall cat dann schnell in einem anderen Terminal: cat /dev/usb/hiddevice0 > key1.usbdump und drücken Sie / das Gerät nutzen. Dies wird die hiddevice der Binärausgang für diesen Schlüssel auszugeben.
  2. ich schnell zusammen einen Python-Skript gehackt die hiddevice Eingang und Brandereignisse zu lesen. Bisher funktioniert es zum ersten Mal die Taste drücken. Dies ist ähnlich zu dem, was Adam vorgeschlagen, aber ich denke, uinput schwieriger zu Programm / Verwendung obwohl vielleicht elegante und Python ist leicht verfügbar.

Das ist also ein work in progress (funktioniert nur zum ersten Mal gedrückt wird), aber vielleicht so etwas wie dies für Sie funktionieren könnte:

sf1 = open("test.usbdump").read() # read the earlier usb dump from hiddevice
kb = open("/dev/usb/hiddev0")
while 1:
    # Prints true if the specific key has been read.
    print (kb.read(len(sf1)) == sf1)
    # Basically all that has to be done is if ^ is true, then fire off the event you want.

Wenn jemand mir mit meinem Programm helfen kann, oder wenn ich das falsch machte, bitte sagen Sie mir. ;)

Ich weiß, dass es einige Header in dem Anfang Dump des hiddevice enthalten ist. Mit einigen Hex-Bearbeitung und wenig differenzierende segnen, könnten Sie finden, welche Werte sind wichtig und machen einen Scheck für sie in Python. (Zum Beispiel kann die Hexadezimalzeichens „B0“ bedeutet eine spezielle Funktionstaste auf der Tastatur gedrückt wurde, und später gibt es mehr Informationen darüber, welche Taste gedrückt wurde usw.)

Ihr Endergebnis ist dieses: hiddevice0 scheint geben Daten nach einer Weile zu hängen und zu stoppen, nicht sicher, warum, aber stattdessen verwende ich / dev / input / Event * (Es könnte auch für Sie arbeiten,) und das scheint arbeite besser. Auch hier führen gleicher hexediting und Low-Level-Analyse zum Erfolg. Auf dem Weg dorthin fand ich, dass sudo cat /dev/input/event3 | hexdump äußerst hilfreich bei der Bestimmung, welches Bytes für Sie wichtig sind.

Wenn Sie also eine Sk-8812 IBM-Tastatur haben, und möchten die Sondertasten verwenden möchten, können Sie mit mir sprechen, das Skript zu bekommen habe ich.

Ich schrieb über, wie ich meine Unendlichkeit IN-USB-1 (AKA "VEC USB Fußpedal") willkürlich Keysyms unter X auf meinem Weblog zu senden:

verwenden Sie VEC / Infinity USB Fußpedal als Tastatur unter Linux

(Es sollte auch für IN-USB-2 arbeiten und vielleicht einige andere USB Fußsteuerung Modelle verkauft von VEC und P. I. Technik und ihre Klone.)

Hier ist die kürzere Version:

Get X das Pedal

erkennen

Das Pedal ist ein HID-konforme USB-Gerät und die Kernel hat kein Problem, es zu entdecken und machte ihre Veranstaltungen über einen /dev/input/eventX Knoten auf User-Space zur Verfügung. Um zu sehen, dass Sie das evtest Programm ausführen kann (auf Debian: sudo apt install evtest). So müssen Sie nicht Notwendigkeit an die HID-Ebene zu gehen, um die Fußpedale zu verwenden.

Das Problem ist, dass udev es nicht markieren, wie eine Tastatur oder Maus, so X ignoriert es. Dies kann mit einer einzeiligen udev Regeldatei festgelegt werden (dank Parlatype Entwickler Gabor Karsay für die Bereitstellung von diese Lösung in Parlatype Ausgabe 28 ):

ACTION=="add|change", KERNEL=="event[0-9]*", ATTRS{idVendor}=="05f3", ATTRS{idProduct}=="00ff", ENV{ID_INPUT_KEYBOARD}="1"

Setzen Sie diese Zeile in einer Datei namens /etc/udev/rules.d/10-vec-usb-footpedal.rules. Keine Notwendigkeit, etwas neu zu starten, udev sollte die Datei automatisch erkennen.

Wenn Sie nun ziehen und replug das USB-Pedal, sollte es durch X erkannt werden (und Maustaste Ereignisse senden). Um zu überprüfen, führen xev.

Remapping Keysyms mit udev hwdb

ein Pedal zu haben, das nur Mausklicks sendet, ist wahrscheinlich nicht das, was Sie wollen. Diese Tastencodes durch den Pedalschalter gesendet werden, können mit einer udev hwdb Datei neu zugeordnet werden.

Erstellen Sie eine Datei unter /etc/udev/hwdb.d/ (I Mine in /etc/udev/hwdb.d/60-usb-footpedal.hwdb setzen) enthält die folgenden Zeilen: /etc/udev/hwdb.d/60-usb-footpedal.hwdb

evdev:input:b*v05F3p00FF*
 KEYBOARD_KEY_90001=f14
 KEYBOARD_KEY_90002=f15
 KEYBOARD_KEY_90003=f16

Dieses Mal waren wir brauchen um das System zu informieren die binäre hwdb Datei zu aktualisieren:

$ sudo systemd-hwdb update

Und dann ziehen und das Gerät repug.

Die erste Zeile der hwdb Datei entspricht unser Gerät (Anbieter 05F3, Produkt 00FF), und die folgenden Zeilen einen Scancode (hex) zu einem Schlüsselcode zuordnen. Ich entschied mich für die F14, F15 und F16 Funktionstasten, sondern eine Liste der verfügbaren keycodes in / usr / include / linux / Input-Event-codes.h ; die Namen in dieser Datei als hwdb keycodes #defined zu verwenden, so dass sie einfach wandeln die key_ Präfix in Kleinbuchstaben und entfernen.

Der Standard (PC + us) xkb Tastaturlayout auf meinem Computer Karten F14, F15 und F16 die XF86Launch5, XF86Launch6 und XF86Launch7 Keysyms sind. Wenn Sie jetzt öffnen xev und die Pedale drücken, sollten Sie diese Keysyms emittiert sehen. Mit dieser Keysyms kann jeder Pedalschalter als Hotkey in Ihrem Desktop oder Window-Manager abgebildet werden.

Sie können auch die XF86* Keysyms zu anderen Tasten neu zuordnen etwas wie xmodmap verwenden. Für weitere Informationen, einschließlich die Schlüssel immer direkt in vim, mehr Links zur Dokumentation, Zeiger zu dem Lesen der HID-Gerät abbildbar sein, wenn Sie möchten, und eine Lösung für Mac OS X finden Sie in meinem Weblog-

Fußschalter

Eine letzte Sache, die ich erwähnen, ist ein Python-Programm namens Fußschalters , die Ereignisse aus dem evdev liest Gerät (/ dev / input / EreignisX) und kann so konfiguriert werden, um Schlüssel strok auszustellenes (über xdotool) oder Skripts ausführen als Reaktion auf die Pedale zu treten. Es kann anstelle von xmodmap verwendet werden, um Ihr Pedale jedes Tastenhub Sie senden möchten.

Ich verwende für meine Bindung / shorcuts eine Kombination von Compiz, easystroke und xmacro.

Für Ihre Bedürfnisse, ich denke, das fehlende Stück xbindkeys ist. Ich habe diesen Link für Sie gefunden, dass vielleicht Sie hilft dies einzurichten:

http://linux-trackball.dreamhosters.com/

Ich frage mich sowieso, ob es eine Möglichkeit, zwischen mehreren Mausgeräten zu unterscheiden ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top