BASH 23
Ardujoy.sh By jimmyd on 30th January 2022 07:18:31 AM
  1. #!/bin/bash
  2. stty -F /dev/ttyUSB0 115200 cs8 -cstopb -parenb -icanon min 1 time 1
  3.  
  4. # This script depends on the program xdotool to be installed.
  5. # On Debian and probably ubuntu, it can be installed with:
  6. # sudo apt install xdotool
  7.  
  8. USB_DEV="/dev/ttyUSB0"
  9. JOY_BUTTON=1
  10. JOY_UP=1
  11. JOY_DOWN=1
  12. JOY_LEFT=1
  13. JOY_RIGHT=1
  14.  
  15. PREV_BUTTON=1
  16. PREV_UP=1
  17. PREV_DOWN=1
  18. PREV_LEFT=1
  19. PREV_RIGHT=1
  20.  
  21. KEY_BUTTON=q
  22. KEY_UP=w
  23. KEY_DOWN=s
  24. KEY_LEFT=a
  25. KEY_RIGHT=d
  26.  
  27. # All input in this script is read from $USB_DEV (defined above)
  28. (
  29. while :; do
  30.         read LINE
  31.         # If we have received 5 chars in a line, it is assumed correct
  32.         if [ ${#LINE} = 5 ]; then
  33.                 # Split the line up into the different directions and button
  34.                 JOY_BUTTON=${LINE:0:1}
  35.                 JOY_UP=${LINE:4:1}
  36.                 JOY_DOWN=${LINE:3:1}
  37.                 JOY_LEFT=${LINE:2:1}
  38.                 JOY_RIGHT=${LINE:1:1}
  39.  
  40.                 # Only change keypress if read value is different than last time
  41.                 if [ $JOY_BUTTON -ne $PREV_BUTTON ]; then
  42.                         PREV_BUTTON=$JOY_BUTTON
  43.                         if [ $JOY_BUTTON = 0 ]; then
  44.                                 xdotool keydown $KEY_BUTTON
  45.                         else
  46.                                 xdotool keyup $KEY_BUTTON
  47.                         fi
  48.                 fi
  49.  
  50.                 if [ $JOY_UP -ne $PREV_UP ]; then
  51.                         PREV_UP=$JOY_UP
  52.                         if [ $JOY_UP = 0 ]; then
  53.                                 xdotool keydown $KEY_UP
  54.                         else
  55.                                 xdotool keyup $KEY_UP
  56.                         fi
  57.                 fi
  58.  
  59.                 if [ $JOY_DOWN -ne $PREV_DOWN ]; then
  60.                         PREV_DOWN=$JOY_DOWN
  61.                         if [ $JOY_DOWN = 0 ]; then
  62.                                 xdotool keydown $KEY_DOWN
  63.                         else
  64.                                 xdotool keyup $KEY_DOWN
  65.                         fi
  66.                 fi
  67.  
  68.                 if [ $JOY_LEFT -ne $PREV_LEFT ]; then
  69.                         PREV_LEFT=$JOY_LEFT
  70.                         if [ $JOY_LEFT = 0 ]; then
  71.                                 xdotool keydown $KEY_LEFT
  72.                         else
  73.                                 xdotool keyup $KEY_LEFT
  74.                         fi
  75.                 fi
  76.  
  77.                 if [ $JOY_RIGHT -ne $PREV_RIGHT ]; then
  78.                         PREV_RIGHT=$JOY_RIGHT
  79.                         if [ $JOY_RIGHT = 0 ]; then
  80.                                 xdotool keydown $KEY_RIGHT
  81.                         else
  82.                                 xdotool keyup $KEY_RIGHT
  83.                         fi
  84.                 fi
  85.         fi
  86. done
  87. ) < $USB_DEV

PasteIT is for source code and general debugging text.

Login or Register to edit, delete and keep track of your pastes and more.

Raw Paste

Login or Register to edit or fork this paste. It's free.