Это не может быть сделано без некоторого программирования.
Сначала проверьте, как обнаружить MIDI-события. Перейдите к терминалу и выполните aseqdump -l
чтобы вывести список портов MIDI; это выводит что-то вроде этого:
$ 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
Затем запустите его с именем клиента, чтобы проверить, приходят ли события:
$ 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
...
Во-вторых, для симуляции нажатий клавиш вам нужен xdotool
. Если он еще не установлен, запустите sudo apt-get install xdotool
.
Вы можете использовать type
для ввода текста или key
для имитации специальных клавиш:
xdotool type Hello, World!
xdotool key ctrl+p
Обратите внимание, что не все специальные ключи обрабатываются правильно xdotool
.
А Ctrl+Alt+Del обрабатывается ядром очень специально и, вероятно, не работает при моделировании; попробуйте запустить sudo reset
вместо xdotool
.
Наконец, свяжите все вместе с помощью сценария. Поместите это в текстовый файл, например, ~/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
Сделайте его исполняемым (chmod +x ~/bin/midi-to-keys
) и запустите его (~/bin/midi-to-keys
).
Теперь нажатие E-5 или C-4 должно иметь некоторый эффект.
Изменить или добавить строки вида "Note on x" ) command ;;
делать что хочешь.