Ben Hughes asked for the code for the demo video “LEGO MINDSTORMS EV3 controlling Powered UP motor” so here it is:
#!/usr/bin/env bash event_left='*code 105 (KEY_LEFT), value 1*' event_right='*code 106 (KEY_RIGHT), value 1*' event_down='*code 108 (KEY_DOWN), value 1*' event_up='*code 103 (KEY_UP), value 1*' event_enter='*code 28 (KEY_ENTER), value 1*' function finish { # terminate all subshells kill 0 # reset all motors gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 0800810011510000 gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 0800810111510000 } trap finish EXIT { while : do gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 0800810011510000 sleep 0.35 done }& while : do evtest '/dev/input/event1' | while read line do # echo $line case $line in $event_left) echo "LEFT" gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 0800810011510060 sleep 0.1 ;; $event_right) echo "RIGHT" gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 08008100115100A0 sleep 0.1 ;; $event_down) echo "DOWN" gatttool -i hci0 -b 90:84:2B:06:AB:5D --char-write-req --handle 0x0e --value 0800810011510000 sleep 0.1 ;; $event_up) echo "UP" ;; $event_enter) echo "ENTER" ;; esac done done