diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 4dc6349..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -hid-gadget-test diff --git a/Makefile b/Makefile deleted file mode 100644 index 5c9291c..0000000 --- a/Makefile +++ /dev/null @@ -1,5 +0,0 @@ - -all: hid-gadget-test - -hid-gadget-test: hid-gadget-test.c - $(CC) -g -O -o $@ $< diff --git a/convert.sh b/convert.sh deleted file mode 100644 index e151532..0000000 --- a/convert.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/bin/bash - -function convert() -{ - local kbcode="" - - if [ "$1" == " " ] - then - kbcode='space' - elif [ "$1" == "!" ] - then - kbcode='left-shift 1' - elif [ "$1" == "." ] - then - kbcode='period' - elif [ "$1" == "\`" ] - then - kbcode='backquote' - elif [ "$1" == "~" ] - then - kbcode='left-shift tilde' - elif [ "$1" == "+" ] - then - kbcode='kp-plus' - elif [ "$1" == "=" ] - then - kbcode='equal' - elif [ "$1" == "_" ] - then - kbcode='left-shift minus' - elif [ "$1" == "-" ] - then - kbcode='minus' - elif [ "$1" == "\"" ] - then - kbcode='left-shift quote' - elif [ "$1" == "'" ] - then - kbcode='quote' - elif [ "$1" == ":" ] - then - kbcode='left-shift semicolon' - elif [ "$1" == ";" ] - then - kbcode='semicolon' - elif [ "$1" == "<" ] - then - kbcode='left-shift comma' - elif [ "$1" == "," ] - then - kbcode='comma' - elif [ "$1" == ">" ] - then - kbcode='left-shift period' - elif [ "$1" == "?" ] - then - kbcode='left-shift slash' - elif [ "$1" == "\\" ] - then - kbcode='backslash' - elif [ "$1" == "|" ] - then - kbcode='left-shift backslash' - elif [ "$1" == "/" ] - then - kbcode='slash' - elif [ "$1" == "{" ] - then - kbcode='left-shift lbracket' - elif [ "$1" == "}" ] - then - kbcode='left-shift rbracket' - elif [ "$1" == "(" ] - then - kbcode='left-shift 9' - elif [ "$1" == ")" ] - then - kbcode='left-shift 0' - elif [ "$1" == "[" ] - then - kbcode='lbracket' - elif [ "$1" == "]" ] - then - kbcode='rbracket' - elif [ "$1" == "#" ] - then - kbcode='left-shift 3' - elif [ "$1" == "@" ] - then - kbcode='left-shift 2' - elif [ "$1" == "$" ] - then - kbcode='left-shift 4' - elif [ "$1" == "%" ] - then - kbcode='left-shift 5' - elif [ "$1" == "^" ] - then - kbcode='left-shift 6' - elif [ "$1" == "&" ] - then - kbcode='left-shift 7' - elif [ "$1" == "*" ] - then - kbcode='kp-multiply' - - else - case $1 in - [[:upper:]]) - tmp=$1 - kbcode="left-shift ${tmp,,}" - ;; - *) - kbcode="$1" - ;; - esac - fi - - echo "$kbcode" -} diff --git a/duckpi.sh b/duckpi.sh index 504e7ab..a8b5a99 100644 --- a/duckpi.sh +++ b/duckpi.sh @@ -1,14 +1,129 @@ #!/bin/bash -export PATH=$PATH:$(pwd) defdelay=0 kb="/dev/hidg0 keyboard" last_cmd="" last_string="" line_num=0 -scriptdir=$(dirname "$BASH_SOURCE") -. $scriptdir/convert.sh +function convert() +{ + local kbcode="" + + if [ "$1" == " " ] + then + kbcode='space' + elif [ "$1" == "!" ] + then + kbcode='left-shift 1' + elif [ "$1" == "." ] + then + kbcode='period' + elif [ "$1" == "\`" ] + then + kbcode='backquote' + elif [ "$1" == "~" ] + then + kbcode='left-shift tilde' + elif [ "$1" == "+" ] + then + kbcode='kp-plus' + elif [ "$1" == "=" ] + then + kbcode='equal' + elif [ "$1" == "_" ] + then + kbcode='left-shift minus' + elif [ "$1" == "-" ] + then + kbcode='minus' + elif [ "$1" == "\"" ] + then + kbcode='left-shift quote' + elif [ "$1" == "'" ] + then + kbcode='quote' + elif [ "$1" == ":" ] + then + kbcode='left-shift semicolon' + elif [ "$1" == ";" ] + then + kbcode='semicolon' + elif [ "$1" == "<" ] + then + kbcode='left-shift comma' + elif [ "$1" == "," ] + then + kbcode='comma' + elif [ "$1" == ">" ] + then + kbcode='left-shift period' + elif [ "$1" == "?" ] + then + kbcode='left-shift slash' + elif [ "$1" == "\\" ] + then + kbcode='backslash' + elif [ "$1" == "|" ] + then + kbcode='left-shift backslash' + elif [ "$1" == "/" ] + then + kbcode='slash' + elif [ "$1" == "{" ] + then + kbcode='left-shift lbracket' + elif [ "$1" == "}" ] + then + kbcode='left-shift rbracket' + elif [ "$1" == "(" ] + then + kbcode='left-shift 9' + elif [ "$1" == ")" ] + then + kbcode='left-shift 0' + elif [ "$1" == "[" ] + then + kbcode='lbracket' + elif [ "$1" == "]" ] + then + kbcode='rbracket' + elif [ "$1" == "#" ] + then + kbcode='left-shift 3' + elif [ "$1" == "@" ] + then + kbcode='left-shift 2' + elif [ "$1" == "$" ] + then + kbcode='left-shift 4' + elif [ "$1" == "%" ] + then + kbcode='left-shift 5' + elif [ "$1" == "^" ] + then + kbcode='left-shift 6' + elif [ "$1" == "&" ] + then + kbcode='left-shift 7' + elif [ "$1" == "*" ] + then + kbcode='kp-multiply' + + else + case $1 in + [[:upper:]]) + tmp=$1 + kbcode="left-shift ${tmp,,}" + ;; + *) + kbcode="$1" + ;; + esac + fi + + echo "$kbcode" +} while IFS='' read -r line || [[ -n "$line" ]]; do ((line_num++)) @@ -23,49 +138,49 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ "$kbcode" != "" ] then - echo "$kbcode" | hid-gadget-test $kb > /dev/null + echo "$kbcode" | /home/pi/hid-gadget-test $kb > /dev/null fi done elif [ "$cmd" == "ENTER" ] then last_cmd="enter" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "DELAY" ] then last_cmd="UNS" ((info = info*1000)) - sleep $info + /home/pi/usleep $info elif [ "$cmd" == "WINDOWS" -o "$cmd" == "GUI" ] then last_cmd="left-meta ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "MENU" -o "$cmd" == "APP" ] then last_cmd="left-shift f10" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "DOWNARROW" -o "$cmd" == "DOWN" ] then last_cmd="down" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "LEFTARROW" -o "$cmd" == "LEFT" ] then last_cmd="left" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "RIGHTARROW" -o "$cmd" == "RIGHT" ] then last_cmd="right" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "UPARROW" -o "$cmd" == "UP" ] then last_cmd="up" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "DEFAULT_DELAY" -o "$cmd" == "DEFAULTDELAY" ] then @@ -75,23 +190,23 @@ while IFS='' read -r line || [[ -n "$line" ]]; do elif [ "$cmd" == "BREAK" -o "$cmd" == "PAUSE" ] then last_cmd="pause" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "ESC" -o "$cmd" == "ESCAPE" ] then last_cmd="escape" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "PRINTSCREEN" ] then last_cmd="print" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "CAPSLOCK" -o "$cmd" == "DELETE" -o "$cmd" == "END" -o "$cmd" == "HOME" -o "$cmd" == "INSERT" -o "$cmd" == "NUMLOCK" -o "$cmd" == "PAGEUP" -o "$cmd" == "PAGEDOWN" -o "$cmd" == "SCROLLLOCK" -o "$cmd" == "SPACE" -o "$cmd" == "TAB" \ -o "$cmd" == "F1" -o "$cmd" == "F2" -o "$cmd" == "F3" -o "$cmd" == "F4" -o "$cmd" == "F5" -o "$cmd" == "F6" -o "$cmd" == "F7" -o "$cmd" == "F8" -o "$cmd" == "F9" -o "$cmd" == "F10" -o "$cmd" == "F11" -o "$cmd" == "F12" ] then last_cmd="${cmd,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "REM" ] then @@ -102,38 +217,38 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ "$info" == "DELETE" -o "$info" == "END" -o "$info" == "HOME" -o "$info" == "INSERT" -o "$info" == "PAGEUP" -o "$info" == "PAGEDOWN" -o "$info" == "SPACE" -o "$info" == "TAB" ] then last_cmd="left-shift ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == *"WINDOWS"* -o "$info" == *"GUI"* ] then read -r gui char <<< "$info" last_cmd="left-shift left-meta ${char,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "DOWNARROW" -o "$info" == "DOWN" ] then last_cmd="left-shift down" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "LEFTARROW" -o "$info" == "LEFT" ] then last_cmd="left-shift left" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "RIGHTARROW" -o "$info" == "RIGHT" ] then last_cmd="left-shift right" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "UPARROW" -o "$info" == "UP" ] then last_cmd="left-shift up" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "F1" -o "$info" == "F2" -o "$info" == "F3" -o "$info" == "F4" -o "$info" == "F5" -o "$info" == "F6" -o "$info" == "F7" -o "$info" == "F8" -o "$info" == "F9" -o "$info" == "F10" -o "$info" == "F11" -o "$info" == "F12" ] then last_cmd="left-shift ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null else echo "($line_num) Parse error: Disallowed $cmd $info" fi @@ -143,26 +258,26 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ "$info" == "BREAK" -o "$info" == "PAUSE" ] then last_cmd="left-ctrl pause" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "F1" -o "$info" == "F2" -o "$info" == "F3" -o "$info" == "F4" -o "$info" == "F5" -o "$info" == "F6" -o "$info" == "F7" -o "$info" == "F8" -o "$info" == "F9" -o "$info" == "F10" -o "$info" == "F11" -o "$info" == "F12" ] then last_cmd="left-ctrl ${cmd,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "ESC" -o "$info" == "ESCAPE" ] then last_cmd="left-ctrl escape" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "" ] then last_cmd="left-ctrl" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null else last_cmd="left-ctrl ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null fi elif [ "$cmd" == "ALT" ] @@ -171,53 +286,53 @@ while IFS='' read -r line || [[ -n "$line" ]]; do -o "$info" == "F1" -o "$info" == "F2" -o "$info" == "F3" -o "$info" == "F4" -o "$info" == "F5" -o "$info" == "F6" -o "$info" == "F7" -o "$info" == "F8" -o "$info" == "F9" -o "$info" == "F10" -o "$info" == "F11" -o "$info" == "F12" ] then last_cmd="left-alt ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "ESC" -o "$info" == "ESCAPE" ] then last_cmd="left-alt escape" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "" ] then last_cmd="left-alt" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null else last_cmd="left-alt ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null fi elif [ "$cmd" == "ALT-SHIFT" ] then last_cmd="left-shift left-alt" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$cmd" == "CTRL-ALT" ] then if [ "$info" == "BREAK" -o "$info" == "PAUSE" ] then last_cmd="left-ctrl left-alt pause" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "END" -o "$info" == "SPACE" -o "$info" == "TAB" -o "$info" == "DELETE" -o "$info" == "F1" -o "$info" == "F2" -o "$info" == "F3" -o "$info" == "F4" -o "$info" == "F5" -o "$info" == "F6" -o "$info" == "F7" -o "$info" == "F8" -o "$info" == "F9" -o "$info" == "F10" -o "$info" == "F11" -o "$info" == "F12" ] then last_cmd="left-ctrl left-alt ${cmd,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "ESC" -o "$info" == "ESCAPE" ] then last_cmd="left-ctrl left-alt escape" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "" ] then last_cmd="left-ctrl left-alt" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null else last_cmd="left-ctrl left-alt ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null fi elif [ "$cmd" == "CTRL-SHIFT" ] @@ -225,26 +340,26 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ "$info" == "BREAK" -o "$info" == "PAUSE" ] then last_cmd="left-ctrl left-shift pause" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "END" -o "$info" == "SPACE" -o "$info" == "TAB" -o "$info" == "DELETE" -o "$info" == "F1" -o "$info" == "F2" -o "$info" == "F3" -o "$info" == "F4" -o "$info" == "F5" -o "$info" == "F6" -o "$info" == "F7" -o "$info" == "F8" -o "$info" == "F9" -o "$info" == "F10" -o "$info" == "F11" -o "$info" == "F12" ] then last_cmd="left-ctrl left-shift ${cmd,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "ESC" -o "$info" == "ESCAPE" ] then last_cmd="left-ctrl left-shift escape" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null elif [ "$info" == "" ] then last_cmd="left-ctrl left-shift" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null else last_cmd="left-ctrl left-shift ${info,,}" - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null fi elif [ "$cmd" == "REPEAT" ] @@ -261,13 +376,13 @@ while IFS='' read -r line || [[ -n "$line" ]]; do if [ "$kbcode" != "" ] then - echo "$kbcode" | hid-gadget-test $kb > /dev/null + echo "$kbcode" | /home/pi/hid-gadget-test $kb > /dev/null fi done else - echo "$last_cmd" | hid-gadget-test $kb > /dev/null + echo "$last_cmd" | /home/pi/hid-gadget-test $kb > /dev/null fi - sleep $defdelay + /home/pi/usleep $defdelay done fi @@ -275,5 +390,5 @@ while IFS='' read -r line || [[ -n "$line" ]]; do then echo "($line_num) Parse error: Unexpected $cmd." fi - sleep $defdelay + /home/pi/usleep $defdelay done < "$1" diff --git a/g_hid.ko b/g_hid.ko new file mode 100644 index 0000000..d8798df Binary files /dev/null and b/g_hid.ko differ diff --git a/hid-gadget-test b/hid-gadget-test new file mode 100644 index 0000000..6100079 Binary files /dev/null and b/hid-gadget-test differ diff --git a/usleep b/usleep new file mode 100644 index 0000000..279f662 Binary files /dev/null and b/usleep differ diff --git a/usleep.c b/usleep.c new file mode 100644 index 0000000..b6735be --- /dev/null +++ b/usleep.c @@ -0,0 +1,5 @@ +#include +#include +int main(int argc, char **argv) { + usleep( atol( argv[1] ) ); +}