Xbindkeys non funzionerà correttamente


9

Ho un po 'di problemi. Volevo rimappare alcuni tasti di scelta rapida a cui sono abituato dal mio sistema precedente, ma non riesco a farlo funzionare correttamente xbindkeys.

xbindkeys riconosce la combinazione ma in qualche modo il comando non si attiva.

Se uso il comando

xdotool key braceleft

Mi dà il {segno corretto nella console. Tuttavia se uso lo stesso comando in xbindkeys non succede nulla. Se sostituisco il comando con firefoxesso funziona correttamente e apre Firefox, quindi credo funzioni xbindkeys.

Voglio ottenere quanto segue:

Voglio digitare il personaggio {nella finestra attiva con Alt_R+ 7o Alt_Left+ Ctrl+ in 7modo da poter usare entrambi. So che Alt_R(AltGr) è il modo corretto, ma sulle tastiere tedesche è in qualche modo difficile digitare il braceleft con il AltGrtasto (Alt_R), quindi DEVO usare invece Alt_L+ Control+ 7(come ero abituato nel mio sistema precedente). In qualche modo l'ho fatto funzionare correttamente in 12.04, ma non riesco a farlo funzionare in 14.04.

Eventuali suggerimenti? Ho provato diversi comandi. Funzionavano tutti nella console, ma nessuno funzionava quando eseguito da xbindkeys

xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'

Questa è la mia configurazione, che non funzionerà

"xdotool key braceleft"
Control+Alt + 7

Tuttavia, questo funziona:

"firefox"
Control+Alt + 7

Modifica soluzione

Mentre provavo altre cose, ho notato che xdotool sembra innescarsi troppo presto. Ho modificato la configurazione in questo modo:

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

ORA invia il segno {corretto alla finestra attiva. Ora l'unica cosa rimasta è ridurre il sonno e ritardare a un valore praticabile, perché 1 secondo sembra un po 'troppo lungo :)

** Informazioni sull'aggiunta ** Bene, ora sono riuscito a trovare i valori adatti. TUTTAVIA funziona solo se si rilasciano i tasti fino al termine della durata del sonno. Se sei troppo lento se non funziona.

Questa è la mia configurazione attuale per tutti i personaggi AltGr tedeschi non convenzionali

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

Tuttavia, se si desidera digitare più segni @ (ad esempio) è necessario premere Ctrl + Alt + Q come previsto, ma rilasciare tutti i tasti e quindi premerlo di nuovo. Questo, tuttavia, è molto, molto meglio che non avere l'opzione Control + Alt invece di AltGr, ma non è così efficace come sono stato usato anch'io. Forse troverò una soluzione anche per questo.


Eh, questa è una buona scoperta! Non vi è alcun limite di rappresentanza per rispondere alla propria domanda, solo un limite di tempo . Sarebbe bello se potessi tornare a pubblicare questo post come risposta entro 6 ore. Questo ti darà anche qualche rappresentante se ti interessa. Se davvero non ti interessa, includerò la tua soluzione nella mia risposta tra qualche giorno.
terdon,

Hai mai capito come xdotoolripetere il tasto mentre tieni premuto?
Farzher,

Ad essere sincero, ormai non l'ho provato. Sono riuscito a far funzionare senza problemi League of Legends con 60 fps (nel 12.04 non sarebbe iniziato affatto) così, quando sono a casa, ho giocato tutto il tempo.
Ello,

Non ho avuto alcune scorciatoie funzionanti per giorni. La soluzione era semplice: il mio desktop Ubuntu aveva le scorciatoie prima di xbindkeys. Basta modificare le impostazioni della kayboard, aggiungere una nuova scorciatoia personalizzata con azionexdotool getactivewindow key Home
BurninLeo,

Sembra che tu stia cercando di simulare un layout di tastiera tedesco. Perché non cambi semplicemente il layout della tastiera nelle impostazioni di sistema?
Rapti,

Risposte:


4

Il problema xdotoolè che mentre vengono premuti i tasti reali Xorg invia ripetutamente eventi di pressione dei tasti (guarda l' xevoutput). Per ovviare a questo problema, è necessario disattivare temporaneamente la funzione di ripetizione, quindi generare l'evento KeyRelease sul tasto inattivo.

Invece di

"sleep 0.2 && xdotool type --delay 15 '{'"
  Control+Alt + 7

prova quanto segue:

"xset r off; xdotool keyup --window 0 7 type --clearmodifiers --window 0 '{'; xset r on"
  Control+Alt + 7

Grazie per la tua risposta, ma sto usando Manjaro con XFCE ora e lì ha funzionato fuori dalla scatola, quindi non è necessario dormire.
Ello,

@Ello, queste risposte non sono solo per te, quindi la soluzione più universale è apprezzata.
midenok,

3

Mentre provavo altre cose, ho notato che xdotool sembra innescarsi troppo presto. Ho modificato la configurazione in questo modo:

"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7

ORA invia il segno {corretto alla finestra attiva. Ora l'unica cosa rimasta è ridurre il sonno e ritardare a un valore praticabile, perché 1 secondo sembra un po 'troppo lungo :)

** Informazioni sull'aggiunta ** Bene, ora sono riuscito a trovare i valori adatti. TUTTAVIA funziona solo se si rilasciano i tasti fino al termine della durata del sonno. Se sei troppo lento se non funziona.

Questa è la mia configurazione attuale per tutti i personaggi AltGr tedeschi non convenzionali

"sleep 0.2 && xdotool type --delay 15 '{'"
Control+Alt + 7

"sleep 0.2 && xdotool key --delay 15 at"
Control+Alt + q

"sleep 0.2 && xdotool type --delay 15 '€'"
Control+Alt + e

"sleep 0.2 && xdotool type --delay 15 '['"
Control+Alt + 8

"sleep 0.2 && xdotool type --delay 15 ']'"
Control+Alt + 9

"sleep 0.2 && xdotool type --delay 15 '}'"
Control+Alt + 0

"sleep 0.2 && xdotool type --delay 15 '~'"
Control+Alt + plus

Tuttavia, se si desidera digitare più segni @ (ad esempio) è necessario premere Ctrl + Alt + Q come previsto, ma rilasciare tutti i tasti e quindi premerlo di nuovo. Questo, tuttavia, è molto, molto meglio che non avere l'opzione Control + Alt invece di AltGr, ma non è così efficace come sono stato usato anch'io. Forse troverò una soluzione anche per questo.


È molto strano, sono contento che tu l'abbia capito, ma non riesco davvero a capire perché stia succedendo. Comunque, grazie per aver dedicato del tempo a pubblicare questo, potrebbe aiutare la persona successiva con lo stesso problema.
terdon,

Invece sleep, penso che tu voglia aggiungere + releasele combinazioni di tasti. Questo dirà xbindkeysdi attendere fino al rilascio del tasto prima di attivare il comando.
wjandrea,


2

Recentemente ho avuto questo problema, in cui ho provato a simulare il tasto Play / Pausa multimediale (XF86AudioPlay) usando Ctrl + G. Dopo alcune ricerche, è apparso non solo bisogno di annullare il controllo , ma anche il tasto g (che è di cosa aveva bisogno il sleep 0.1ritardo per cominciare). Se cancello entrambi questi tasti usando keyupdentro xdotool e l'interruttore --clearmodifiers, funziona. Questo è il mio nuovo comando, nel mio file .xbindkeys.rc:

"xdotool keyup g key --clearmodifiers XF86AudioPlay"
Control + g

1

Non sono sicuro del motivo per cui non funziona xbindkeys, suppongo sia necessario specificare la finestra in cui scrivere. Come soluzione alternativa, è possibile utilizzare xvkbdinvece.

  1. Installare xvkbd

    sudo apt-get install xvkbd
    
  2. Aggiungi questo al tuo .xbindkeysrcfile

    "xvkbd -text '{'"
    Control+Alt + 7
    

Dovrebbe funzionare.


APPUNTI

Per qualche motivo, sulla mia macchina, xvkbdsta usando uno dei miei layout secondari (spagnolo) invece di quello principale (inglese americano) e questo causa la {stampa ". Se hai anche questo problema, basta giocare un po 'per scoprire a quale tasto corrisponde {il layout utilizzato. In alternativa, puoi scavare più a fondo e capire da dove xvkbdottiene le sue localeimpostazioni.


continua a non funzionare. anche con caratteri propri. se scrivo xvkbd -text 'apple' nella console, stampa apple, se lo eseguo tramite xbindkeys, non succede nulla. se guardo xbindkeys -v vedo che ha riconosciuto il comando premuto
Ello

l'ho fatto funzionare, ma con qualcos'altro
Ello,

@Ello fantastico! Che cosa hai usato? Ha funzionato bene per me. Potresti pubblicare una risposta che spieghi la tua soluzione e accettarla?
terdon,

Ho modificato il mio post, non posso rispondere alle mie domande a causa della mancanza di reputazione. Siamo spiacenti
Ello il
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.