Tengo un pequeño problema. Quería reasignar algunas teclas de acceso rápido a las que estoy acostumbrado desde mi sistema anterior, pero no puedo hacer que funcione correctamente xbindkeys
.
xbindkeys
reconoce la combinación pero de alguna manera el comando no se dispara.
Si uso el comando
xdotool key braceleft
Me da la {
señal correcta en la consola. Sin embargo, si uso el mismo comando en xbindkeys, no pasa nada. Si reemplazo el comando con firefox
él funciona correctamente y abre Firefox, entonces supongo que xbindkeys
funciona.
Quiero lograr lo siguiente:
Quiero escribir el carácter {
en la ventana activa con
Alt_R+ 7o Alt_Left+ Ctrl+ 7para poder usar ambos. Sé que Alt_R(AltGr) es la forma correcta, pero en los teclados alemanes es de alguna manera difícil escribir el braceleft con la AltGrtecla (Alt_R), así que DEBO usar Alt_L+ Control+ en su 7lugar (como estaba acostumbrado en mi sistema anterior). De alguna manera conseguí que funcionara correctamente en 12.04, pero no puedo hacerlo funcionar en 14.04.
¿Alguna sugerencia? Intenté varios comandos. Todos trabajaron en la consola, pero ninguno funcionó cuando xbindkeys los ejecutó.
xdotool type '{'
xdotool key braceleft
xdotool key ISO_Level3_Shift+7
xvkbd -xsendevent -text '{'
xvkbd -xsendevent -text '\[Alt_R]+7'
Esta es mi configuración, que no funcionará
"xdotool key braceleft"
Control+Alt + 7
Sin embargo, esto funciona:
"firefox"
Control+Alt + 7
Editar solución
Cuando probé varias cosas más, noté que xdotool parece desencadenarse demasiado pronto. Modifiqué la configuración de esta manera:
"sleep 1 && xdotool type --delay 15 '{'"
Control+Alt + 7
AHORA envía el signo {correcto a la ventana activa. Ahora lo único que queda es reducir el sueño y la demora a un valor viable, porque 1 segundo parece demasiado largo :)
** Información adicional ** Bueno, ahora logré encontrar valores adecuados. SIN EMBARGO, esto solo funciona si sueltas las teclas hasta que la duración del sueño haya terminado. Si eres demasiado lento, no funcionará.
Esta es mi configuración actual para todos los caracteres alemanes AltGr poco convenientes
"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
Sin embargo, si desea escribir múltiples signos @ (por ejemplo), debe presionar Ctrl + Alt + Q según lo previsto, pero suelte todas las teclas y luego vuelva a presionarlo. Esto, sin embargo, es mucho, mucho mejor que no tener la opción Control + Alt en lugar de AltGr, pero no es tan efectiva como yo también la usaba. Quizás encuentre una solución para esto también.
xdotool
repetir la tecla mientras la mantienes presionada?xdotool getactivewindow key Home
Respuestas:
El problema
xdotool
es que, mientras se presionan las teclas reales, Xorg envía repetidamente eventos de pulsación de teclas (mira laxev
salida). Para superar esto, debe desactivar temporalmente la función de repetición, luego generar el evento KeyRelease en la tecla que estaba inactiva.En vez de
prueba lo siguiente:
fuente
Cuando probé varias cosas más, noté que xdotool parece desencadenarse demasiado pronto. Modifiqué la configuración de esta manera:
AHORA envía el signo {correcto a la ventana activa. Ahora lo único que queda es reducir el sueño y la demora a un valor viable, porque 1 segundo parece demasiado largo :)
** Información adicional ** Bueno, ahora logré encontrar valores adecuados. SIN EMBARGO, esto solo funciona si sueltas las teclas hasta que la duración del sueño haya terminado. Si eres demasiado lento, no funcionará.
Esta es mi configuración actual para todos los caracteres alemanes AltGr poco convenientes
Sin embargo, si desea escribir múltiples signos @ (por ejemplo), debe presionar Ctrl + Alt + Q según lo previsto, pero suelte todas las teclas y luego vuelva a presionarlo. Esto, sin embargo, es mucho, mucho mejor que no tener la opción Control + Alt en lugar de AltGr, pero no es tan efectiva como yo también la usaba. Quizás encuentre una solución para esto también.
fuente
sleep
, creo que quieres agregar+ release
a los combos clave. Eso le indicaráxbindkeys
que espere hasta que se suelte la tecla antes de activar el comando.Como se documenta en preguntas similares ( ¿Por qué estos comandos xte funcionan en la terminal, pero no cuando están vinculados con xbindkeys? ), Puede solicitar
xbindkeys
que se activen eventos en el lanzamiento (al presionar la tecla):De esta manera, no hay conflicto entre las teclas utilizadas para el acceso directo y las enviadas.
fuente
Recientemente tuve este problema, donde traté de simular la tecla Reproducir / Pausar medios (XF86AudioPlay) usando Ctrl + G. Después de investigar, parece que no solo necesito cancelar el Control , sino también la tecla g (que es para qué necesitaba el
sleep 0.1
retraso). Si cancelo ambas teclas usandokeyup
xdotool y el interruptor --clearmodifiers, funciona. Este es mi nuevo comando, en mi archivo .xbindkeys.rc:fuente
No estoy seguro de por qué no funciona
xbindkeys
, supongo que debe especificar la ventana para escribir. Como solución alternativa, puede usarxvkbd
en su lugar.Instalar en pc
xvkbd
Agregue esto a su
.xbindkeysrc
archivoEso debería funcionar.
Notas
Por alguna razón, en mi máquina,
xvkbd
estoy usando uno de mis diseños secundarios (español) en lugar del principal (inglés de EE. UU.) Y esto hace{
que realmente se imprima"
. Si también tiene este problema, solo juegue un poco para averiguar qué tecla corresponde{
con el diseño utilizado. Alternativamente, puede profundizar y descubrir de dóndexvkbd
obtiene sulocale
configuración.fuente