¿Cómo simular la entrada del teclado?

15

Esto es lo más importante que me impide disfrutar de Ubuntu / Linux.

Idealmente, me gustaría poder ejecutar mi script AutoHotKey en Ubuntu, pero no tuve mucha suerte trabajando con Wine.

Esto es lo que estoy haciendo en AHK (usar modificadores adicionales también funciona, Shift+ Alt+ les Shift+ right).

!l:: Send, {Right}
+!l:: Send, +{Right}
^!l:: Send, ^{Right}
^+!l:: Send, ^+{Right}

Intenté AutoKey, pero no estaba consumiendo datos, la reasignación de Alt+ Ia la tecla de flecha derecha funcionó, pero aún así se ejecutó Alt+ I, que a veces selecciona un elemento del menú de la aplicación.

Lo más cerca que estuve fue xbindkeysconfigurar teclas de acceso rápido, esto parece funcionar muy bien. Y xvkbdpara simular entrada; esta parte es realmente defectuosa; no funciona en todos los programas y me hace perder mucha concentración, entre otros problemas.

Para cualquiera que se pregunte qué estoy tratando de hacer: lo uso I J K Lcomo teclas de flecha mientras Altestá abajo.

Farzher
fuente
Hola Stephen, estoy buscando exactamente lo mismo. ¿Has logrado hacer esto?
lolmaus - Andrey Mikhaylov

Respuestas:

18

Nunca he usado xvkbd, pero hay otros dos excelentes programas para simular la entrada de teclado que me gusta y uso. Uno es xtey el otro es xdotool.

sudo apt-get install xautomation xdotool  

Ambos xdotooly xteson muy similares, pero como uso xtemás, entraré en eso.

xte:

La sintaxis más básica para xtees:

xte 'command key/mousebutton/xyCoordinates'

xte Sin embargo, puede hacer mucho más que crear una entrada de teclado, también puede mover el mouse y simular presionar el botón del mouse, entre otras cosas.

Ejemplos de sintaxis:

  • Para llamar a una sola tecla, presione: xte 'key keyName'

  • Para llamar a una combinación de teclas: xte 'keydown keyName' 'keydown secondKeyName' 'keyup keyName' 'keyup secondKeyName

  • Para llamar a un botón del mouse: xte 'mouseclick buttonNumber'(Puede encontrar los números de los botones xev)

  • Para mover el mouse: xte 'mousemove xCoordinate yCoordinate'

  • ¡Y más! Leerman xte

Nombres clave:

Aquí hay una lista de nombres clave (distintos de los obvios):

Home
Left
Up
Right
Down
Page_Up
Page_Down
End
Return
BackSpace
Tab
Escape
Delete
Shift_L
Shift_R
Control_L
Control_R
Meta_L
Meta_R
Alt_L
Alt_R
Multi_key  
Super_L  
Super_R

Leyendo:

También te puede interesar leer:

¿Cómo puedo cambiar las teclas de mi teclado? (¿Cómo puedo crear comandos / atajos de teclado personalizados?)

¿Cómo vuelvo a asignar ciertas teclas o dispositivos?

Seth
fuente
Esto se ve bien pero no funciona xbindkeys. Cuando xte 'key a'se llama desde xbindkeysallí solo hace que mi cursor parpadee cuando presiono mi tecla de acceso rápido. xte 'key a'en la línea de comando funciona. gnome-terminalllamado de xbindkeysobras. No estoy seguro de dónde está el problema.
Farzher
Realmente no parece que xteesté tratando de enviar el evento clave a la ventana enfocada cuando se llama desde xbindkeys...
Farzher
@StephenSarcsamKamenar Yo mismo he tenido algunos problemas, pero por mi experiencia eso ha sido un xbindkeysproblema. Para mí, tengo que presionar la combinación de teclas exactamente al mismo tiempo xbindkeyspara enviar el comando. YMMV.
Septiembre
Quizás un xbindkeysproblema; xdotooltrabajé con él, pero cuando mantenía presionada una tecla, nunca lo repetiría. ¿Cuáles son buenas alternativas a xbindkeys?
Farzher
1
@StephenSarcsamKamenar Xmodmap se explica en esta respuesta, así como en esta . Eso es lo que haría uso si xbindkeysno lo hizo bastante bien preforma (que no lo hace con xte .. al menos para mí.)
Seth