Rimappa una combinazione di tasti in un'altra combinazione, ad esempio Super + Ctrl + Maiusc + J -> Ctrl + Maiusc + Sinistra


11

Voglio implementare un livello chiave aggiuntivo, in modo da poter accedere a chiavi non alfanumeriche senza dover muovere i polsi.

Ho usato Autokey per questo scopo, ma l'esperienza è stata insoddisfacente: ha avuto ritardi occasionali e ha permesso a tasti originali di entrare in alcune app.

Quindi ho bisogno di una soluzione di basso livello.


potresti dover creare un driver di input virtuale personalizzato per fare ciò, immagino che sarebbe scritto in C
Amias,

@Amias, puoi per favore elaborare?
lolmaus - Andrey Mikhaylov,

potresti avere un driver xinput che esegue il normale driver della tastiera ma interpreta le sequenze di tasti prima di passarle a xorg, questo ti darebbe il controllo completo ma sarebbe un paio di giorni moderatamente complessi per un programmatore C.
Amias,

Risposte:


10

Prova una combinazione di xbindkeys e xvkbd . xbindkeys ascolta le chiavi e invia la traduzione a xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Apri .xbindkeysrc nel tuo editor preferito. Ho commentato tutto il resto, ma è bene fare riferimento, se necessario.

Per provarlo, ho provato a mappare Ctrl +; a Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Mi aspetto che tu stia cercando qualcosa del genere

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Salvare il file, quindi eseguire xbindkeys

Per ricaricare eventuali modifiche alla configurazione, ho interrotto il processo xbindkeys e poi riavviato.

Sintassi di xbindkeys

Ho elaborato la combinazione di tasti utilizzando una GUI per xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Una volta eseguito, premi Ottieni chiave per la combinazione da inserire nella seconda riga del tuo file .xbindkeysrc.

sintassi xvkbd

Dal manuale:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

Adoro sapere come funziona e se la combinazione è adatta al tuo scopo. Sembra buono come un keymapper, ma non necessariamente un macro runner.


Ehi @MarkHewitt! Grazie mille per la risposta dettagliata! Sfortunatamente, questo non funziona molto bene per me: il keypress originale continua a venire, il che rovina tutto.
lolmaus - Andrey Mikhaylov,

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.