Tenere premuto i tasti per il modificatore

22

Mi sono innamorato della possibilità di tenere premuto un tasto su Android per circa 100ms per ottenere una chiave di punteggiatura "sotto" (altrimenti trovata nel menu), e mi piacerebbe avere la stessa abilità per Ubuntu. Non ho bisogno di ripetere i personaggi, quindi non mi mancherà nulla. È possibile, e se sì, come? Grazie:)

    
posta Patrick 15.07.2016 - 15:16

3 risposte

2

Al momento non esiste alcun metodo facile e veloce per abilitare questo tipo di funzionalità sulla versione desktop di Ubuntu.

Personalmente sono un grande fan delle scelte rapide della chiave di composizione predefinita ; Li trovo più veloci e molto più intuitivi rispetto alla selezione della lunga pressione in stile mobile (♥). Detto questo, se hai il tempo e la determinazione, potresti essere in grado di utilizzare l'opzione slowkeys nell'applicazione predefinita di Universal Access per creare qualcosa di simile all'opzione mobile.

Giocare in questo modo, XKB sembra essere associato al controllo di slowkey. Puoi utilizzare XKB per configurare e migliorare i binding della tastiera di Ubuntu e, per quanto posso dire, questa sezione ha ciò di cui hai bisogno. Quindi non dovrebbe essere (relativamente) difficile avere una stampa di caratteri alternativa quando una chiave è di lunga durata.

Dove le cose si complicano è l'assegnazione di più caratteri speciali a un tasto (esempio: tieni premuto "a" e ottieni le opzioni per ä, à, á, â, ecc.). Come fai a scorrere le opzioni? Avete i caratteri visualizzati in una finestra di dialogo, quindi utilizzate il mouse, la scheda oi tasti freccia per selezionarne uno? Sembra che richiede tempo.

Oppure potresti assegnare lunghezze di attesa diverse a caratteri diversi. 100ms hold per à, 200ms hold per á, 300ms per â ... Ma ricordando quanti secondi sono per i quali i personaggi potrebbero essere ingannevoli, per non parlare dell'assegnazione di tutti loro individualmente sarebbe un mal di testa. Inoltre, quando entri in una lista di personaggi più lunga, puoi stare lì seduto con in mano una chiave per 3-4 secondi buoni. Sembra ancora più dispendioso in termini di tempo.

Piuttosto che i rallentamenti, puoi provare l'opzione ripetizioni invece di fare in modo che più tocchi di una chiave forniscano un carattere speciale: 3 tocchi di "a" per à, ad esempio. Ma poi corri il rischio di avere dei personaggi speciali indesiderati che spuntano quando scrivi qualcosa come "buono" o "inquietante" o "aaaaaaahhh!"

Potresti aver trovato un altro metodo di implementazione più efficiente a cui non sto pensando, nel qual caso vai avanti e modifica! Ma ti consiglio comunque di comporre le combinazioni di tasti nel frattempo. ☺

    
risposta data Boxbot 27.10.2016 - 21:07
0

Sono certo che ciò è possibile modificando la routine di servizio dell'interruzione della tastiera (ISR). Ogni volta che viene premuto un tasto, viene inviato un segnale di interruzione alla CPU. La CPU eseguirà quindi l'interruzione eseguendo l'ISR della tastiera.

Gli ISR ​​sono programmi di basso livello, tipicamente codificati in linguaggio assembly, perché trattano direttamente con l'hardware e devono essere veloci. Qui contiene maggiori informazioni sugli interrupt hardware sui processori Intel e su come utilizzarli.

Le tastiere hanno avuto i loro processori sin dai tempi del PC IBM originale e possono generare caratteri molto rapidamente se si tiene premuto un tasto.

Un paio di definizioni potrebbero essere utili qui:

Ripeti ritardo : il tempo trascorso tra la pressione del tasto e il momento in cui inizia a ripetere.

Frequenza di ripetizione : dopo aver premuto un tasto, la tastiera ripeterà quel tasto. La velocità con cui si ripete è la frequenza di ripetizione. A volte chiamato tasso tipografico.

La routine ISR della tastiera dovrebbe essere modificata per sostituire la funzione Ritardo di ripetizione per una funzione di "Caratteri alternativi". Il tempismo della stampa e rilascio chiave è l'essenza di ciò. Misurando la durata della pressione del tasto, l'ISR (o gestore di interruzioni) saprebbe di passare il carattere normale del carattere alternativo (il tasto "sotto")

In sostanza, dovresti modificare o riscrivere il driver di dispositivo per la tastiera.

Questa è solo una visione ad alto livello dell'approccio che ritengo necessario per ottenere ciò che desideri.

    
risposta data dbkeys 21.10.2016 - 09:10
0

Poiché il touchpad funziona in modo simile al touchscreen di Android, offre un'interfaccia migliore della tastiera. In effetti, è possibile implementare un nuovo set di routine per eseguire lo zoom muovendo contemporaneamente il pollice e l'indice e rimpicciolendo la direzione invertendo la direzione.

Il touchpad può già percepire un dito, due dita, persino i palmi delle mani che si spostano accidentalmente sul touchpad e quindi ignorati. Le velocità di accelerazione e decelerazione sono riconosciute. Sta già controllando il puntatore del mouse per il testo che vorresti evidenziare con una pressione prolungata.

Dovrebbe essere un pezzo di torta per i programmatori di aggiungere un ulteriore bit di codice per misurare la lunghezza della touch press e visualizzare un menu sensibile al contesto per select , copy , paste , ecc. come fanno oggi gli smartphone .

Penso che la tua domanda sia una grande idea che può evolvere software e tastiere con touchpad incorporati a un livello completamente nuovo. Dovrei sottolineare che alcuni touchpad integrati nelle tastiere hanno uno schermo LCD a colori che potrebbe portare la tua idea ancora di più. Ad esempio, il testo sullo schermo evidenziato può essere specchiato al display LCD del touchpad e ingrandito per movimenti precisi.

Apple, Google, Microsoft e Linus potrebbero essere tutti entusiasti della tua idea. Sicuramente ha suscitato il mio interesse!

    
risposta data WinEunuuchs2Unix 25.10.2016 - 03:55

Leggi altre domande sui tag