completamento automatico a livello di desktop


11

Digito spesso le stesse parole in diverse applicazioni:

  • Editor (emacs, vi)
  • Programma di navigazione in rete
  • conchiglie

Sarebbe bello avere un completamento automatico delle parole che ho digitato durante l'ultima settimana disponibile in tutte le applicazioni di cui sopra.

Ognuno di essi ha un modo per migliorare la velocità di battitura. Ma qualcosa a livello desktop sarebbe il migliore.

Esempio: "Integrazione continua". Voglio un modo veloce per digitare questa parola senza cambiare il programma che riceve l'input.

C'è già qualcosa del genere?


Soetihng come Synapse ( lifehacker.com/5704221/... )?
Salem,

Penso che significino qualcosa come il completamento automatico di LibreOffice. Salva le parole digitate (che soddisfano un requisito di lunghezza personalizzabile). Quando digiti le prime lettere di una parola che ha salvato, ti offrirà di digitare il resto e puoi premere il tasto tab per digitarlo o continuare a digitare per negarlo.
Andy Castille,

Risposte:


7

La soluzione alla tua richiesta è Metodo di input.

Quello che hai descritto è qualcosa di familiare alla maggior parte degli utenti del linguaggio CJK. Rivediamo come funziona il metodo di input negli attuali sistemi Linux.

Il sistema del metodo di input

Ecco una semplice architettura per un sistema comune di metodi di input:

NOTA: ho acquisito questa immagine da X Input Method Protocol . Alcune delle frecce sono irrilevanti per la discussione successiva.

Storicamente, XIM (il protocollo del metodo di input X) era l'unico protocollo. È eccessivamente complesso e manca di alcune funzionalità desiderate. Quindi è per lo più abbandonato, anche se la compatibilità è ancora fornita da toolkit popolari come GTK, Qt.

Un moderno sistema di metodi di input contiene diverse parti:

  1. Supporto libreria lato client

    • tipicamente implementato come modulo caricato da toolkit (ad es. per GTK, vedi /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/)
  2. Server del metodo di input
  3. Server X.

Come si adattano queste parti?

Un utente digita una chiave. Il server X riceve l'evento hardware dall'interfaccia di evdev, compone un XEvent e lo invia all'applicazione con il focus della tastiera. Il modulo del metodo di input del toolkit dell'applicazione (GTK, Qt) intercetta l'evento e ha passato le informazioni al server del metodo di input. Il server del metodo di input calcola ciò che l'utente può desiderare e restituisce del testo al modulo IM.

Ora parliamo dell'architettura del server di messaggistica istantanea.
Un server di messaggistica istantanea in genere è costituito da due parti:

  1. Un framework di messaggistica istantanea che gestisce complessità specifiche della piattaforma e fornisce una bella interfaccia per i moduli IM del motore IM e del toolkit. Fornisce i meccanismi IPC utilizzati dal modulo IM, dal server e dal motore.
  2. Vari motori di messaggistica istantanea svolgono il vero lavoro di trasformazione delle chiavi digitate dall'utente nel testo desiderato. I motori di messaggistica istantanea possono essere librerie condivise caricate dal server di messaggistica istantanea o processi indipendenti che comunicano con il server di messaggistica istantanea.
  3. I programmi di configurazione del metodo di input ausiliario forniscono un'interfaccia utente intuitiva per la personalizzazione del comportamento del server IM e del motore.

Tutto sommato, ciò che fa un messaggio istantaneo è trasformare ciò che si digita in qualcosa di diverso e facoltativamente fornire previsioni.

Un esempio

Usiamo ibus-pinyinqui per digitare alcuni caratteri cinesi.

La romanizzazione di 汉语拼音 è han yu pin yin. Per prima cosa devi digitare tutte queste lettere per ottenere i quattro caratteri cinesi. Ma dopo alcune volte, devi solo digitare i quattro caratteri iniziali h y p yper ottenere il carattere cinese.

Nel ibus-pinyincaso, han yu pin yinè abbreviato in h y p y.
I motori di messaggistica istantanea più avanzati utilizzano tecniche di apprendimento statistico per fornire una migliore previsione. Nulla può impedirti di scrivere un motore per il metodo di input in inglese per fornire una spinta alla digitazione.

Come bonus, tutti i toolkit hanno il supporto del metodo di input tranne alcuni semplici vecchi programmi X. Quindi questa è una soluzione abbastanza universale.


Grazie ad Anders FU Kiær. Funzioni / Digitazione-Booster | Fedora Project Wiki dovrebbe essere la risposta


1
il framework IM più comunemente usato è ibus . se ho tempo, lavorerò sulla scrittura di un motore di messaggistica istantanea per farlo. chiunque può provarlo e lasciare un collegamento se si dispone di un codice di prova.
sgx1,



La tua risposta è la migliore Ti do la generosità :-)
Guettli,

3

Dai un'occhiata alla mia sceneggiatura, TextSuggest .

In azione:

Imgur

Installazione:

Installa i seguenti pacchetti:

  • xdotool
  • xclip
  • suckless-tools(per dmenu)

Quindi assegnare 2 scorciatoie da tastiera:

  • uno su `python3 /path/to/TextSuggest.py --noselect
  • l'altro a python3 /path/to/TextSuggest.py

Il primo fornirà semplicemente un elenco di tutte le parole ricercabili. Usa il secondo quando hai selezionato del testo e desideri ottenere suggerimenti / completamenti.

I suggerimenti accettati vengono memorizzati come cronologia (e vengono quindi suggeriti per primi) nel file ~/.textsuggest_history.txt.

Puoi definire parole personalizzate ed espansioni / alias su ~/.Custom_Words.txt.


0

Dai un'occhiata a Autokey . Potrebbe adattarsi alle tue esigenze. C / P dal loro sito:

AutoKey è un'utilità di automazione desktop per Linux e X11. Ti consente di gestire la raccolta di script e frasi e di assegnare abbreviazioni e tasti di scelta rapida a questi. Ciò consente di eseguire uno script o inserire testo su richiesta in qualunque programma si stia utilizzando.

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.