I have something like this in linux using a novation launchcontrol, it's quite straightforward using aseqdump, say I use the buttons to switch desktops, I have this launched as part of my session and always in background. While developing this I just printed $line to see what aseqdump sent to figure out the regexes
while IFS=' ' read -r line; do
if [[ "$line" == *"client"*"Launch Control"\* ]]; then
device=$(echo "$line" | cut -d' ' -f2)
fi
done < <(aconnect -i)
aseqdump -p ${device::-1} | while IFS=' ' read -r line; do
if [[ "$line" == *"Note on"* ]]; then
note=$(echo "$line" | grep -o "note [0-9]*" | cut -d' ' -f2)
if [ "$note" == "9" ]; then
wmctrl -s 8
fi
elif [[ "$line" == *"Control change"*"127" ]]; then
note=$(echo "$line" | grep -o "controller [0-9]*" | cut -d' ' -f2)
if [ "$note" == "114" ]; then
# some macro
fi
fi
done
Repo is 2,500loc, all-in, according to SCC. Should be really easy to point your favorite coding agent at the repo and have it one or two shot something similiar in the language of your choice.
I have something like this in linux using a novation launchcontrol, it's quite straightforward using aseqdump, say I use the buttons to switch desktops, I have this launched as part of my session and always in background. While developing this I just printed $line to see what aseqdump sent to figure out the regexes
Repo is 2,500loc, all-in, according to SCC. Should be really easy to point your favorite coding agent at the repo and have it one or two shot something similiar in the language of your choice.