Tenere premuto i tasti per modificatore


23

Mi sono innamorato di poter tenere premuto un tasto su Android per circa 100 ms per ottenere un tasto di punteggiatura 'sotto' (altrimenti trovato nel menu), e mi piacerebbe avere la stessa capacità per Ubuntu. Non ho bisogno di ripetere i personaggi, quindi non mi mancherebbe nulla. È possibile, e se sì, come? Grazie :)


È tardi, ma puoi per favore approfondire di più le funzionalità che vorresti implementare per Ubuntu.?
Harshit,

1
@Harshit, certo: utilizzando la tastiera Google, su Android, è possibile selezionare la possibilità di tenere premuti i tasti sulla tastiera -oft per digitare la punteggiatura, senza dover accedere a un menu separato. Questo sarebbe idealisticamente implementato come opzione all'interno di Ubuntu per cui, tenendo premuto, diciamo, il tasto '2' per 100ms digita un '@', tenendo premuto '-' tipi '_', e così via.
Patrick,

Risposte:


3

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

Personalmente sono un grande fan delle scorciatoie da tastiera predefinite ; Li trovo più veloci e molto più intuitivi della selezione a lunga pressione in stile mobile (♥). Detto questo, se hai il tempo e la determinazione, potresti essere in grado di piggyback l' opzione slowkeys nell'applicazione di base Universal Access predefinita per creare qualcosa di simile all'opzione mobile.

Frugando in questo, XKB sembra essere associato al controllo dei tasti lenti. Puoi usare XKB per configurare e migliorare i collegamenti della tastiera di Ubuntu e, per quanto ne so, questa sezione ha ciò di cui hai bisogno. Quindi non dovrebbe essere così (relativamente) difficile avere una stampa di caratteri alternativi quando una chiave è tenuta a lungo.

Il punto in cui le cose si complicano è l'assegnazione di più caratteri speciali a una sequenza di tasti (esempio: tenere premuto "a" e ottenere opzioni per ä, à, á, â, ecc.). Come scorrere le opzioni? I personaggi vengono visualizzati in una finestra di dialogo, quindi utilizzare il mouse, la scheda o i tasti freccia per selezionarne uno? Sembra richiedere tempo.

Oppure puoi assegnare lunghezze di attesa diverse a caratteri diversi. 100 ms per à, 200 ms per á, 300 ms per ... Ma ricordare quanti secondi sono per i quali i personaggi potrebbero diventare difficili, per non parlare del fatto che assegnarli tutti individualmente sarebbe un mal di testa. Inoltre, quando entri in elenchi di personaggi più lunghi, potresti rimanere seduto con un tasto per 3-4 secondi. Sembra ancora più tempo.

Anziché i tasti di scelta rapida, è possibile provare l' opzione di ripetizione dei tasti per fare in modo che più tocchi di un tasto forniscano un carattere speciale: 3 tocchi di "a" per à, ad esempio. Ma poi corri il rischio di far apparire personaggi speciali indesiderati quando digiti qualcosa come "buono", "inquietante" o "aaaaaaahhh!"

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


1
Dando un'occhiata al tuo link, potrebbe quindi essere possibile impostare ogni tasto come tasto modificatore su una punteggiatura, con un ritardo, che è esattamente quello che sto cercando! Dovrò provare ad armeggiare con questo, più tardi.
Patrick,

0

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

Gli ISR ​​sono programmi di basso livello, tipicamente codificati in linguaggio assembly, perché gestiscono direttamente l'hardware e devono essere veloci. Ecco maggiori informazioni sugli interrupt di processo sui processori Intel e su come usarli.

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

Un paio di definizioni potrebbero essere utili qui:

Ritardo ripetizione : il tempo trascorso tra la pressione del tasto e l'inizio della ripetizione.

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 il tasso tipematico.

La routine ISR da tastiera dovrebbe essere modificata per sostituire la funzione Ripeti ritardo per una funzione "Carattere alternativo". Il tempismo della pressione e del rilascio dei tasti ne è l'essenza. Misurando la durata della pressione del tasto, l'ISR (o gestore di interruzione) saprebbe trasmettere il carattere normale del carattere alternativo (il tasto "sottostante")

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

Questa è solo una visione di alto livello dell'approccio che penso sarebbe necessario per ottenere ciò che desideri.


0

Poiché il touchpad funziona in modo simile al touchscreen in Android, fornirebbe un'interfaccia migliore rispetto alla tastiera. In effetti, potrebbe essere implementata una serie completamente nuova di zoom per muovere insieme pollice e indice e zoom indietro per invertire la direzione.

Il touchpad può già rilevare un dito, due dita, anche i palmi delle mani che si spostano accidentalmente contro il touchpad e quindi ignorato. Le velocità di accelerazione e decelerazione sono riconosciute. Sta già controllando il puntatore del mouse per il testo che si desidera evidenziare premendo a lungo.

Dovrebbe essere un pezzo di torta per i programmatori di aggiungere un po 'più di codice per misura tatto lunghezza stampa e aprire un menu sensibile al contesto per select, copy, paste, ecc, come gli smartphone fanno oggi.

Penso che la tua domanda sia una grande idea che può far evolvere software e tastiere con touchpad integrati a un livello completamente nuovo. Vorrei sottolineare che alcuni touchpad integrati nelle tastiere hanno uno schermo LCD a colori che potrebbe portare ulteriormente la tua idea. ad esempio, il testo dello schermo evidenziato può essere specchiato sul display LCD del touchpad e ingrandito per movimenti di precisione.

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


Sento il sarcasmo o è genuino?
Amit Gold,

Penso che sia un'ottima idea. Porta alcuni dei vantaggi dello smartphone sul desktop.
WinEunuuchs2Unix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.