Merge "Add scanlib for producing keyboard scancodes"

This commit is contained in:
Jenkins 2014-06-16 06:50:26 +00:00 committed by Gerrit Code Review
commit ec2615fa7c

302
labs/lib/osbash/scanlib Normal file
View File

@ -0,0 +1,302 @@
# The functions in this library are used to get scancode strings for VirtualBox
# keyboard input (keyboardputscancode).
#
# It was generated mostly from output of Cameron Kerr's scancodes.l:
# http://humbledown.org/keyboard-scancodes.xhtml
#
# The library works with bash 3.2 (shipped with Mac OS X as of 2014).
function char2scancode {
local KEY=$1
case "$KEY" in
'a')
echo -n " 1e 9e"
;;
'b')
echo -n " 30 b0"
;;
'c')
echo -n " 2e ae"
;;
'd')
echo -n " 20 a0"
;;
'e')
echo -n " 12 92"
;;
'f')
echo -n " 21 a1"
;;
'g')
echo -n " 22 a2"
;;
'h')
echo -n " 23 a3"
;;
'i')
echo -n " 17 97"
;;
'j')
echo -n " 24 a4"
;;
'k')
echo -n " 25 a5"
;;
'l')
echo -n " 26 a6"
;;
'm')
echo -n " 32 b2"
;;
'n')
echo -n " 31 b1"
;;
'o')
echo -n " 18 98"
;;
'p')
echo -n " 19 99"
;;
'q')
echo -n " 10 90"
;;
'r')
echo -n " 13 93"
;;
's')
echo -n " 1f 9f"
;;
't')
echo -n " 14 94"
;;
'u')
echo -n " 16 96"
;;
'v')
echo -n " 2f af"
;;
'w')
echo -n " 11 91"
;;
'x')
echo -n " 2d ad"
;;
'y')
echo -n " 15 95"
;;
'z')
echo -n " 2c ac"
;;
'A')
echo -n " 2a 1e 9e aa"
;;
'B')
echo -n " 2a 30 b0 aa"
;;
'C')
echo -n " 2a 2e ae aa"
;;
'D')
echo -n " 2a 20 a0 aa"
;;
'E')
echo -n " 2a 12 92 aa"
;;
'F')
echo -n " 2a 21 a1 aa"
;;
'G')
echo -n " 2a 22 a2 aa"
;;
'H')
echo -n " 2a 23 a3 aa"
;;
'I')
echo -n " 2a 17 97 aa"
;;
'J')
echo -n " 2a 24 a4 aa"
;;
'K')
echo -n " 2a 25 a5 aa"
;;
'L')
echo -n " 2a 26 a6 aa"
;;
'M')
echo -n " 2a 32 b2 aa"
;;
'N')
echo -n " 2a 31 b1 aa"
;;
'O')
echo -n " 2a 18 98 aa"
;;
'P')
echo -n " 2a 19 99 aa"
;;
'Q')
echo -n " 2a 10 90 aa"
;;
'R')
echo -n " 2a 13 93 aa"
;;
'S')
echo -n " 2a 1f 9f aa"
;;
'T')
echo -n " 2a 14 94 aa"
;;
'U')
echo -n " 2a 16 96 aa"
;;
'V')
echo -n " 2a 2f af aa"
;;
'W')
echo -n " 2a 11 91 aa"
;;
'X')
echo -n " 2a 2d ad aa"
;;
'Z')
echo -n " 2a 2c ac aa"
;;
'Y')
echo -n " 2a 15 95 aa"
;;
'1')
echo -n " 02 82"
;;
'2')
echo -n " 03 83"
;;
'3')
echo -n " 04 84"
;;
'4')
echo -n " 05 85"
;;
'5')
echo -n " 06 86"
;;
'6')
echo -n " 07 87"
;;
'7')
echo -n " 08 88"
;;
'8')
echo -n " 09 89"
;;
'9')
echo -n " 0a 8a"
;;
'0')
echo -n " 0b 8b"
;;
'!')
echo -n " 2a 02 82 aa"
;;
'@')
echo -n " 2a 03 83 aa"
;;
'#')
echo -n " 2a 04 84 aa"
;;
'$')
echo -n " 2a 05 85 aa"
;;
'%')
echo -n " 2a 06 86 aa"
;;
'^')
echo -n " 2a 07 87 aa"
;;
'&')
echo -n " 2a 08 88 aa"
;;
'*')
echo -n " 2a 09 89 aa"
;;
'(')
echo -n " 2a 0a 8a aa"
;;
')')
echo -n " 2a 0b 8b aa"
;;
'-')
echo -n " 0c 8c"
;;
'_')
echo -n " 2a 0c 8c aa"
;;
'=')
echo -n " 0d 8d"
;;
'+')
echo -n " 2a 0d 8d aa"
;;
' ')
echo -n " 39 b9"
;;
'[')
echo -n " 1a 9a"
;;
']')
echo -n " 1b 9b"
;;
'{')
echo -n " 2a 1a 9a aa"
;;
'}')
echo -n " 2a 1b 9b aa"
;;
';')
echo -n " 27 a7"
;;
':')
echo -n " 2a 27 a7 aa"
;;
',')
echo -n " 33 b3"
;;
'.')
echo -n " 34 b4"
;;
'/')
echo -n " 35 b5"
;;
'\')
echo -n " 2b ab"
;;
'|')
echo -n " 2a 2b ab aa"
;;
'?')
echo -n " 2a 35 b5 aa"
;;
'"')
echo -n " 2a 28 a8 aa"
;;
"'")
echo -n " 28 a8"
;;
">")
echo -n " 2a 34 b4 aa"
;;
"<")
echo -n " 2a 33 b3 aa"
;;
esac
}
function esc2scancode {
echo -n " 01 81"
}
function enter2scancode {
echo -n " 1c 9c"
}
# vim: set ai ts=4 sw=4 et ft=sh: