Esto no se puede hacer sin alguna programación.
Primero, prueba cómo detectar eventos MIDI. Vaya a una terminal y ejecute aseqdump -l
para listar los puertos MIDI; esto genera algo como esto:
$ aseqdump -l Port Client name Port name 0:0 System Timer 0:1 System Announce 14:0 Midi Through Midi Through Port-0 24:0 Xonar D2 Xonar D2 MIDI 32:0 Yamaha DS-1E (YMF754) Yamaha DS-1E (YMF754) MIDI
Luego ejecútelo con el nombre del cliente para verificar si llegan eventos:
$ aseqdump -p "Xonar D2" Waiting for data. Press Ctrl+C to end. Source Event Ch Data 24:0 Note on 0, note 64, velocity 86 24:0 Note on 0, note 48, velocity 80 24:0 Note off 0, note 48 24:0 Note on 0, note 68, velocity 84 24:0 Note on 0, note 52, velocity 88 24:0 Note off 0, note 64 24:0 Note off 0, note 52 24:0 Note off 0, note 68 ...
En segundo lugar, para simular pulsaciones de teclas, necesita xdotool
. Si aún no lo tienes instalado, ejecuta sudo apt-get install xdotool
.Puedes usar type
para escribir texto, o key
para simular teclas especiales:
xdotool type Hello, World! xdotool key ctrl+p
Tenga en cuenta que no todas las teclas especiales son manejadas correctamente por xdotool
.Y Ctrl+Alt+Del es manejado de manera muy especial por el kernel y probablemente no funcione cuando se simula; intenta ejecutar sudo reset
en lugar de xdotool
.
Finalmente, une todo con un guión. Póngalo en un archivo de texto, por ejemplo, ~/bin/midi-to-keys
:
#!/bin/bash
aseqdump -p "Xonar D2" | \
while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do
case "$ev1 $ev2 $data1" in
"Note on 64" ) xdotool type hello ;;
"Note on 48" ) xdotool key ctrl+j ;;
esac
done
Hazlo ejecutable (chmod +x ~/bin/midi-to-keys
), y ejecútelo (~/bin/midi-to-keys
).Ahora, presionar E-5 o C-4 debería tener algún efecto.
Cambiar o agregar líneas del formulario "Note on x" ) command ;;
para hacer lo que quieras.
Tuve un problema similar, así que programé algo que se adapte a mis requisitos.
https://gitlab.com/enetheru/midi2input
Se ejecuta en Linux y usa el sistema x windows para eventos de entrada de teclado y mouse.
Utiliza lua para la configuración y el mapeo, puede realizar cualquier acción como su usuario. detecta qué ventana está activa usando el atributo X_CLASS para que pueda hacer diferentes asignaciones para cualquier aplicación que se esté ejecutando actualmente.
Recarga automáticamente la configuración para que no tengas que cerrarla y volver a abrirla todo el tiempo.
He escrito una regla udev simple para crear las conexiones midi cuando conecto mi controlador.
Incluso hay un PKGBUILD de archlinux para archlinux, solo que no lo he agregado al aur.
La idea era eliminar todos los puntos débiles al hacer asignaciones desde el controlador medio a cualquier cosa que quisiera.
Han pasado algunos años desde que lo construí, y lo uso todos los días, presto atención al repositorio, pero solo una o dos personas me han enviado un correo electrónico al respecto.