Cómo vincular HotKeys globales a un programa WINE en Linux

¿Alguna vez ha instalado un programa de Windows en Linux en WINE, solo para descubrir que ya no vincula los atajos de teclado de todo el sistema? HTG tiene el trabajo que estabas buscando.

Imagen de djeucalyptus

Visión general

Cualquiera que haya pensado siquiera en la idea de cambiar a Linux probablemente se encontró rápidamente con el problema de que hay una aplicación de Windows que DEBE estar ejecutando. Ya le hemos mostrado que puede lograr esto con WINE.

Para este autor, la aplicación era una aplicación de texto a voz que usa el motor Microsoft SAPI4. La instalación del programa en WINE fue muy sencilla, pero una vez que terminé, descubrí rápidamente que los atajos de teclado utilizados para activar las diversas acciones del programa (iniciar la reproducción, detener la reproducción, etc.) no funcionaban y esto era un problema conocido. problema con el VINO.

Me complace decir que después de eones de investigación finalmente encontré la solución en forma de una utilidad GNU que puede manipular la interfaz X.org usando funciones nativas. Aunque no es el único de su tipo, xdotool fue el más fácil de implementar y ya estaba en los repositorios de Ubuntu / Mint.

xdotool

El programa xdotool puede realizar muchas tareas relacionadas con la ventana desde el CLIDicho esto, los únicos dos que vamos a utilizar son “búsqueda” y “clave”. La función de “búsqueda” hace precisamente eso, busca una ID de ventana basada en la configuración que realizó. La función “tecla” le permite simular una pulsación de tecla en un identificador de ventana.

Instalacion y configuracion

Se asume que ya ha instalado WINE y el programa que necesita. En este ejemplo, usaremos Balabolka como la aplicación “Windows” porque es una buena réplica gratuita del programa original para el que necesitaba esta solución (segundo centro de voz).

Si también ha elegido usar Balabolka, debe activar su capacidad de atajos de teclado.
Nota: es posible que desee instalar TTSReader o 2nd Speech Center, incluso en modo de demostración, para que se instalen las voces SAPI.

Abra el programa y vaya a la configuración (Shift + F6) en “Opciones” -> “Configuración”.

Ve a la pestaña Atajos de teclado y marca la casilla “Usar atajos de teclado globales”.

Haga clic en Aceptar.

Deje que se ejecute en segundo plano para que pueda hacer su trabajo cuando le cuelguemos las teclas.

Instale xdotool emitiendo:

sudo apt-get install xdotool

Enlace global

El programa xdotool en sí no nos ayuda a vincularnos a atajos de teclado a nivel mundial, pero podemos usar el sistema de atajos de teclado del sistema operativo existente. Lo que vamos a hacer es crear un script simple que usa xdotool para enviar las pulsaciones de teclas que queremos al programa Balabolka y llamarlo desde el sistema de atajos de teclado del sistema operativo.

En relación :  Conviértete en un maestro de Vi aprendiendo estos más de 30 atajos de teclado

Cree un script llamado “start_read.sh” con el siguiente contenido:

xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F9"

Cree otro script llamado esta vez “stop_read.sh” con el siguiente contenido:

xdotool key --window $( xdotool search --limit 1 --all --pid $( pgrep balabolka ) --name Balabolka ) "ctrl+alt+F7"

Nota: Sé que esta es una sola línea que no requiere una secuencia de comandos, pero el programa de “Atajos de teclado” de Mint / Ubuntu, no cooperaría simplemente invocándolo directamente. Si sabe cómo, comparta los comentarios a continuación.

Al frenar este comando a sus componentes, lo que vemos es:

  • La parte “–pid $ (pgrep balabolka)”, ejecuta un “pgrep” en el programa que queremos usar para verificar su ID de proceso. Esto reducirá el campo xdotool de “búsqueda” a ese PID solamente.
  • La parte “xdotool search –limit 1 –all… –name Balabolka” restringe aún más el alcance de búsqueda de xdotool y limita las respuestas devueltas a 1. Como en nuestro caso, no importa cuál de los ID de programa, limitar el resultado actúa como un entrenador para el comando “clave”. Es posible que deba masajear más esta parte si eso es importante para el programa que está utilizando.
  • La parte “xdotool key –window% WINDOW_ID%“ ctrl + alt + F7 ″ ”, envía la pulsación de tecla deseada al windowID que se obtuvo en las partes anteriores.

Haga que los scripts sean ejecutables.

Teclado Linux Mint atajos

En Linux Mint, los atajos de teclado globales se definen en el programa “Atajos de teclado”.

Una vez abierto, haga clic en “Agregar” para crear un nuevo acceso directo personalizado:

Dale un nombre y en “Comando” da la ruta completa a uno de los scripts que creamos arriba. Repita el proceso para el segundo guión.

Ahora, en la columna “Accesos directos”, haga clic en la palabra “Deshabilitado” para tener la opción de definir una nueva combinación de teclas.
Nota: puede usar algo diferente al programa predeterminado si lo desea. En cierto sentido, crear una “reasignación” de atajos de teclado que, dependiendo del programa que esté utilizando, de otro modo estaría fuera de su control.

Dale al combo que has seleccionado y escucha la magia.

Teclado de Ubuntu

En Ubuntu, el programa que define los atajos de teclado globales se llama simplemente “Teclado”.

Vaya a la pestaña “Accesos directos” y seleccione “Accesos directos personalizados”.

Haga clic en el signo más para agregar un acceso directo. Dale un nombre y en “Comando” da la ruta completa a uno de los scripts que creamos arriba. Repita el proceso para el segundo guión.
Ahora haga clic en la palabra “Deshabilitado” para tener la opción de definir una nueva combinación de teclas.

En relación :  Cómo crear accesos directos personalizados para cualquier comando con Google Home

Nota: Al repetir la nota de la sección Mint, opcionalmente puede usar algo diferente al predeterminado del programa. En cierto sentido, crear una “reasignación” de atajos de teclado que, dependiendo del programa que esté utilizando, de otro modo estaría fuera de su control.

Notas del autor

Siempre que he considerado seriamente cambiarme a Linux, este problema fue el primero en mi lista de problemas. No es eso Linux no tiene problemas, pero ese fue el verdadero obstáculo para mí. Lo he intentado una y otra vez, pregunté a amigos / personas en el campo e incluso lo hice un bono … Estoy feliz de que esta saga haya terminado y mi el alma finalmente puede descansar.
Espero haber ayudado a alguien allí a no tener que pasar por la misma prueba.


Doc Brown: Me tomó casi treinta años y toda la fortuna de mi familia hacer realidad la visión de ese día. Dios mío, ¿ha pasado tanto tiempo?

Moyens Staff
El personal de Moyens I/O lo ha motivado, brindándole consejos sobre tecnología, desarrollo personal, estilo de vida y estrategias que lo ayudarán.