Map MIDI keyboard notes to shell commands and keyboard shortcuts.
4
stars
53
commits
Rust
primary language
Aug 26, 2026
updated
Map MIDI notes, chords, sequences, pedals, knobs, faders, and pitch bend to keyboard actions or shell commands on Linux, Windows, and macOS.
Arch Linux:
yay -S midi-hook
Other platforms can download a binary from GitHub Releases or build from source:
cargo build --release
Before setup, follow the short platform permission instructions.
Create mappings interactively:
midi-hook setup
Test what your controller sends:
midi-hook test
midi-hook test --details # Every raw MIDI message
Start listening:
midi-hook commands.conf
Press Enter or Ctrl+C to stop.
device = RockJam BT MIDI:RockJam BT MIDI Bluetooth 128:0
60 = shortcut ctrl+alt+t
61 = command echo "note 61"
60+64+67 = command echo "chord"
48>50>52 = command echo "sequence"
65 [vel=100..127] = command echo "hard press"
cc 64 = command echo "pedal {value}"
cc 76 = command echo "volume {percent}%"
pitch = command echo "pitch {value}"
Run midi-hook setup instead of writing native key codes by hand. See REFERENCE.md for every trigger, action, platform requirement, LED feedback, and command behavior.
Packaged Linux releases include an optional systemd user service:
mkdir -p ~/.config/midi-hook
cp commands.conf ~/.config/midi-hook/commands.conf
systemctl --user enable --now midi-hook
View its logs:
journalctl --user -u midi-hook -f
The package installs the service but never enables it automatically.
53 commits
Rust
97.1%
Just
1.6%
Shell
1.3%
Map MIDI keyboard notes to shell commands and keyboard shortcuts.
4
stars
53
commits
Rust
primary language
Aug 26, 2026
updated
Map MIDI notes, chords, sequences, pedals, knobs, faders, and pitch bend to keyboard actions or shell commands on Linux, Windows, and macOS.
Arch Linux:
yay -S midi-hook
Other platforms can download a binary from GitHub Releases or build from source:
cargo build --release
Before setup, follow the short platform permission instructions.
Create mappings interactively:
midi-hook setup
Test what your controller sends:
midi-hook test
midi-hook test --details # Every raw MIDI message
Start listening:
midi-hook commands.conf
Press Enter or Ctrl+C to stop.
device = RockJam BT MIDI:RockJam BT MIDI Bluetooth 128:0
60 = shortcut ctrl+alt+t
61 = command echo "note 61"
60+64+67 = command echo "chord"
48>50>52 = command echo "sequence"
65 [vel=100..127] = command echo "hard press"
cc 64 = command echo "pedal {value}"
cc 76 = command echo "volume {percent}%"
pitch = command echo "pitch {value}"
Run midi-hook setup instead of writing native key codes by hand. See REFERENCE.md for every trigger, action, platform requirement, LED feedback, and command behavior.
Packaged Linux releases include an optional systemd user service:
mkdir -p ~/.config/midi-hook
cp commands.conf ~/.config/midi-hook/commands.conf
systemctl --user enable --now midi-hook
View its logs:
journalctl --user -u midi-hook -f
The package installs the service but never enables it automatically.
53 commits
Rust
97.1%
Just
1.6%
Shell
1.3%