Versione breve di ciò che voglio ottenere: Ho un pedale (INFINITY-IN-USB-1, se è di qualche interesse) che è implementato come un dispositivo HID generico, e vorrei che si comportasse come controllo e tasti alt su linux. Sto cercando qualcosa al livello di X, cioè non solo singoli programmi.Come catturare l'input HID raw su linux?
Longer versione: Ho questa configurazione funzionante in Windows XP chiamando RegisterRawInputDevices dll e GetRawInputData e ascoltando l'ingresso in un finestre nascoste. Tutto è realizzato con uno script abbastanza semplice Autohotkey (può postare qui se qualcuno è interessato). Il punto è che non è necessario alcun driver aggiuntivo, ecc .; sono necessarie solo le dll di Windows native.
Voglio che questa configurazione funzioni su Linux (in particolare su Gnome con Ubuntu, ma occasionalmente uso altre distro/window manager, quindi la soluzione a livello di X è apprezzata). Questo pedale non si registra come tastiera o come joystick, ma come dispositivo HID con UsagePage 12, Uso 3. Osservo che l'ultima versione di Ubuntu può rilevare e utilizzare i tasti preferiti sulla tastiera Microsoft Natural, che si registra anche come dispositivo HID *. Faccio uso di quei tasti su Windows usando lo stesso metodo che uso il pedale (cioè senza il software in dotazione). Quindi presumo che questa pedaliera possa funzionare anche su linux, ma la domanda è come?
[Sono nuovo al roba di livello inferiore su Linux, quindi si prega di essere generosi con i link ai introduzione o tutorial ogni volta applicabile.]
* Per chi non lo sapesse, i registri Microsoft Natural Keyboard sia come tastiera normale che come dispositivo HID generico. Senza alcune applicazioni (come l'applicazione in bundle) che sanno come interpretare l'input HID, i tasti normali funzioneranno ma i tasti preferiti e i tasti funzione speciali sono inutili.
Per chiarire, Linux non vede il pedale pigiato come input. Riconosce il dispositivo USB, ma xev non fornisce output per le presse a pedale. Ho visto resoconti di persone che usano con successo il pedale sotto WINE per il software di trascrizione, ma che deve funzionare in un modo Windows e non dare quello che voglio (il che sta facendo sembrare il pedale una tastiera per tutte le app native di Linux). Mi chiedo se sia necessario un driver per tastiera linux di basso livello ?
Ecco qualche informazione: Se immette questo nel terminale
cat /dev/usb/hiddev0
(dev/usb/hiddev0
è il mio pedale), ottengo codici grezzi corrispondenti agli presse pedale. Questo è un inizio. So che cosa significa quel codice grezzo: in binario, 0001, 0010, 0100 corrisponde a ciascun pedale, rispettivamente, e la combinazione di pedali preme la combinazione di quei numeri binari, e rilascia l'ingresso di trigger del pedale di qualsiasi pedale ancora premuto (se tutto il pedale è attivo, viene inviato 0000).
Come ottenere X per ascoltare dev/usb/hiddev0
e tradurre i codici grezzi in forse un codice di accesso speciale in modo che sia possibile mapparli con xmodmap o qualcosa del genere?
Puoi approfondire un po 'di più? Come si ascolta/dev/usb/hiddev0 in modo programmatico (l'articolo che hai collegato parla solo di uinput)? Il programma risultante (che ascolta hiddev e invia eventi tastiera/mouse tramite uinput) dovrebbe essere eseguito come demone, presumo? – polyglot
Sì, presumo dalla tua domanda che sai già come leggere hiddev0. Probabilmente starai scrivendo un demone. Inizia scrivendo un programma che legge continuamente hiddev0 e stampa le stampe. Quindi puoi modificarlo per emettere nuovi eventi tramite uinput. Questo fondamentalmente re-iniettera questi eventi nel kernel, ma come eventi di tastiera o mouse (di tua scelta). Non saranno necessarie modifiche a X. –
Sembra un articolo molto popolare su uinput. Collegato da tutto il web. Ahimè, non c'è più e Google ha trovato solo una copia convertita in PDF-> testo convertito. Qualcuno ha ottenuto il PDF originale in un posto che può essere condiviso? –