“Come funzionano i vostri touchscreen con Linux?” è una domanda che ci viene spesso posta. La risposta breve è sempre “perfettamente”, ma esiste più di un modo per supportare e allineare i nostri touchscreen con i sistemi operativi Linux, e la scelta spesso dipende dalle circostanze particolari di una data applicazione. In questo articolo forniremo una panoramica di alto livello di alcuni dei metodi più comuni per supportare Linux.
In articoli futuri forniremo descrizioni tecniche passo dopo passo su come usare queste tecniche, ma nel frattempo se avete domande specifiche fatecelo sapere e faremo del nostro meglio per aiutarvi.
Modulo HID del kernel Linux nativo
I nostri touchscreen USB vengono riconosciuti dalla maggior parte dei sistemi operativi come dispositivi di puntamento HID (Human Interface Device) standard e Linux non fa eccezione – i moduli del kernel USB HID sono installati di default nella maggior parte delle distribuzioni Linux. Questo significa che se si collega il nostro schermo direttamente alla porta USB, questo risponde istantaneamente al tocco senza alcun intervento.
Il collegamento del touchscreen tramite RS-232 seriale (incluso in tutti i modelli tattili di Hope) richiede un po’ più di sforzo, ma non abbiamo avuto problemi a farlo funzionare su Ubuntu 16.04, Debian 8.5 e CentOS 7 utilizzando questa guida.
Una volta che risponde al tocco, in genere si scopre che il touchscreen non segue il dito e ha bisogno di allineamento. Generalmente raccomandiamo di effettuare l’allineamento usando xinput_calibrator o effettuando una calibrazione manuale con EVTest.
xinput_calibrator
xinput_calibrator è un programma di calibrazione open source che fornisce una calibrazione a 4 punti proprio come quella fornita dai nostri driver standard per Windows. Questo programma permette alcune funzioni più avanzate come “tenere premuto per effettuare un clic con il tasto destro del mouse” ed è facile da usare, anche se persistere in una calibrazione dopo il riavvio richiede la modifica di alcuni file di testo. Inoltre, xinput_calibrator non funziona con più monitor, il che potrebbe interessare negativamente alcuni utenti.
xinput_calibrator si trova già in molti repository di pacchetti ed è facilmente installabile su Ubuntu 16.04, Debian 8.5 e Fedora 24 (anche se abbiamo avuto difficoltà a far persistere la calibrazione in Fedora a causa dei diversi formati di file).
CentOS 7 e OpenSUSE 13.2 non hanno un pacchetto nei repository, ma xinput_calibrator può sempre essere compilato dal codice sorgente.
Abbiamo scritto di xinput_calibrator anni fa, ma presto forniremo un aggiornamento di quell’articolo.
Calibrazione manuale con EVTest
Se si utilizza una distribuzione che non supporta xinput_calibrator, un’altra opzione è quella di impostare punti di calibrazione manuale utilizzando EVTest. L’idea di base è che è possibile utilizzare l’utilità EVTest per determinare i punti di offset per calibrare lo schermo, quindi applicare questi punti al touchscreen. Questo è l’approccio che abbiamo adottato in questo post del blog e forniremo istruzioni più dettagliate in un futuro post.
Questo approccio dovrebbe tecnicamente funzionare nella maggior parte delle distribuzioni Linux.
Driver binari di Elo per Linux
I touchscreen di Hope Industrial utilizzano i controller Accutouch di Elo Touch, che fornisce anche una serie di driver binari generici per Linux, disponibili qui.
Abbiamo testato con successo il driver USB versione 4.0.1 e il driver seriale versione 3.4.0 su Ubuntu 14.04 (64 bit). Poiché questi driver provengono direttamente da Elo, sono supportate alcune funzionalità avanzate tra cui display multipli (fino a 32, ne abbiamo testato 2), un’area tattile attiva, clic al tocco, clic alla mancanza di tocco, tempo di trascinamento, bip al tocco, e naturalmente uno strumento completo di calibrazione.
Anche se abbiamo testato con successo tutte queste funzioni, riteniamo questa installazione un po’ più difficile delle tecniche usate sopra. A meno che non siano necessarie alcune di queste funzioni avanzate, si consiglia di attenersi al metodo xinput_calibrator o al metodo EVTest.