これは、何らかのプログラミングなしでは実行できません。
まず、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 ;;
の形式の行を変更または追加します やりたいことは何でもする。
私も同様の問題を抱えていたので、自分の要件に合ったものをプログラムしました.
https://gitlab.com/enetheru/midi2input
Linux で実行され、キーボードとマウスの入力イベントに x Windows システムを使用します。
構成とマッピングに lua を使用し、ユーザーとして任意のアクションを実行できます。 X_CLASS 属性を使用してアクティブなウィンドウを検出するため、現在実行中のアプリケーションにさまざまなマッピングを作成できます。
構成を自動的に再読み込みするため、何度も閉じて再度開く必要はありません。
コントローラーを接続したときに MIDI 接続を作成するための簡単な udev ルールを作成しました。
archlinux 用の archlinux PKGBUILD もありますが、まだ aur に追加していません。
アイデアは、ミッド コントローラーから必要なものへのマッピングを作成する際の問題点をすべて取り除くことでした。
構築してから数年が経ち、毎日使用しています。レポジトリには注意を払っていますが、これについてメールをくれたのは 1 人か 2 人だけです。