initial commit
This commit is contained in:
commit
dc421f035e
8 changed files with 989 additions and 0 deletions
42
generate.sh
Executable file
42
generate.sh
Executable file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
dir="pkg/lang"
|
||||||
|
|
||||||
|
parse_keys() {
|
||||||
|
local file="${1%.*}"
|
||||||
|
local file="${file#*/}"
|
||||||
|
local file="${dir}/${file}.go"
|
||||||
|
cat <<EOF>${file}
|
||||||
|
package lang
|
||||||
|
|
||||||
|
var K = map[string]byte{
|
||||||
|
"": 0,
|
||||||
|
EOF
|
||||||
|
grep -v -E "^$|^/" $1 | sed 's/=//g' | awk '{print "\""$1"\": "$2","}' >>${file}
|
||||||
|
echo "}" >>${file}
|
||||||
|
gofmt -w ${file}
|
||||||
|
}
|
||||||
|
|
||||||
|
parse_lang() {
|
||||||
|
local lang="${1%.*}"
|
||||||
|
local lang="${lang#*/}"
|
||||||
|
local file="${dir}/${lang}.go"
|
||||||
|
cat <<EOF>${file}
|
||||||
|
package lang
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
l := make(Lang)
|
||||||
|
EOF
|
||||||
|
grep -E "^A|^I|^U" $1 | sed 's/= \|,//g' | awk '{print "l[\""$1"\"] = Key{K[\""$2"\"],K[\""$3"\"]}"}' >>${file}
|
||||||
|
echo "Langs[\"${lang}\"] = l" >>${file}
|
||||||
|
echo "}" >>${file}
|
||||||
|
gofmt -w ${file}
|
||||||
|
}
|
||||||
|
|
||||||
|
for f in $(ls keyboard/*.properties); do
|
||||||
|
parse_keys "${f}"
|
||||||
|
done
|
||||||
|
|
||||||
|
for f in $(ls language/*.properties); do
|
||||||
|
parse_lang "${f}"
|
||||||
|
done
|
||||||
150
keyboard/keyboard.properties
Normal file
150
keyboard/keyboard.properties
Normal file
|
|
@ -0,0 +1,150 @@
|
||||||
|
//default keys
|
||||||
|
MODIFIERKEY_CTRL = 0x01
|
||||||
|
MODIFIERKEY_SHIFT = 0x02
|
||||||
|
MODIFIERKEY_ALT = 0x04
|
||||||
|
MODIFIERKEY_GUI = 0x08
|
||||||
|
MODIFIERKEY_LEFT_CTRL = 0x01
|
||||||
|
MODIFIERKEY_LEFT_SHIFT = 0x02
|
||||||
|
MODIFIERKEY_LEFT_ALT = 0x04
|
||||||
|
MODIFIERKEY_LEFT_GUI = 0x08
|
||||||
|
MODIFIERKEY_RIGHT_CTRL = 0x10
|
||||||
|
MODIFIERKEY_RIGHT_SHIFT= 0x20
|
||||||
|
MODIFIERKEY_RIGHT_ALT = 0x40
|
||||||
|
MODIFIERKEY_RIGHT_GUI = 0x80
|
||||||
|
|
||||||
|
KEY_MEDIA_VOLUME_INC = 0x80
|
||||||
|
KEY_MEDIA_VOLUME_DEC = 0x81
|
||||||
|
KEY_MEDIA_MUTE = 0x7F
|
||||||
|
KEY_MEDIA_PLAY_PAUSE = 0x08
|
||||||
|
KEY_MEDIA_NEXT_TRACK = 0x10
|
||||||
|
KEY_MEDIA_PREV_TRACK = 0x20
|
||||||
|
//KEY_MEDIA_STOP = 0x40
|
||||||
|
//KEY_MEDIA_EJECT = 0x80
|
||||||
|
|
||||||
|
KEY_A = 4
|
||||||
|
KEY_B = 5
|
||||||
|
KEY_C = 6
|
||||||
|
KEY_D = 7
|
||||||
|
KEY_E = 8
|
||||||
|
KEY_F = 9
|
||||||
|
KEY_G = 10
|
||||||
|
KEY_H = 11
|
||||||
|
KEY_I = 12
|
||||||
|
KEY_J = 13
|
||||||
|
KEY_K = 14
|
||||||
|
KEY_L = 15
|
||||||
|
KEY_M = 16
|
||||||
|
KEY_N = 17
|
||||||
|
KEY_O = 18
|
||||||
|
KEY_P = 19
|
||||||
|
KEY_Q = 20
|
||||||
|
KEY_R = 21
|
||||||
|
KEY_S = 22
|
||||||
|
KEY_T = 23
|
||||||
|
KEY_U = 24
|
||||||
|
KEY_V = 25
|
||||||
|
KEY_W = 26
|
||||||
|
KEY_X = 27
|
||||||
|
KEY_Y = 28
|
||||||
|
KEY_Z = 29
|
||||||
|
KEY_1 = 30
|
||||||
|
KEY_2 = 31
|
||||||
|
KEY_3 = 32
|
||||||
|
KEY_4 = 33
|
||||||
|
KEY_5 = 34
|
||||||
|
KEY_6 = 35
|
||||||
|
KEY_7 = 36
|
||||||
|
KEY_8 = 37
|
||||||
|
KEY_9 = 38
|
||||||
|
KEY_0 = 39
|
||||||
|
KEY_ENTER = 40
|
||||||
|
KEY_ESC = 41
|
||||||
|
KEY_BACKSPACE = 42
|
||||||
|
KEY_TAB = 43
|
||||||
|
KEY_SPACE = 44
|
||||||
|
KEY_MINUS = 45
|
||||||
|
KEY_EQUAL = 46
|
||||||
|
KEY_LEFT_BRACE = 47
|
||||||
|
KEY_RIGHT_BRACE = 48
|
||||||
|
KEY_BACKSLASH = 49
|
||||||
|
KEY_NON_US_NUM = 50
|
||||||
|
KEY_SEMICOLON = 51
|
||||||
|
KEY_QUOTE = 52
|
||||||
|
KEY_TILDE = 53
|
||||||
|
KEY_COMMA = 54
|
||||||
|
KEY_PERIOD = 55
|
||||||
|
KEY_SLASH = 56
|
||||||
|
KEY_CAPS_LOCK = 57
|
||||||
|
KEY_F1 = 58
|
||||||
|
KEY_F2 = 59
|
||||||
|
KEY_F3 = 60
|
||||||
|
KEY_F4 = 61
|
||||||
|
KEY_F5 = 62
|
||||||
|
KEY_F6 = 63
|
||||||
|
KEY_F7 = 64
|
||||||
|
KEY_F8 = 65
|
||||||
|
KEY_F9 = 66
|
||||||
|
KEY_F10 = 67
|
||||||
|
KEY_F11 = 68
|
||||||
|
KEY_F12 = 69
|
||||||
|
KEY_PRINTSCREEN = 70
|
||||||
|
KEY_SCROLL_LOCK = 71
|
||||||
|
KEY_PAUSE = 72
|
||||||
|
KEY_INSERT = 73
|
||||||
|
KEY_HOME = 74
|
||||||
|
KEY_PAGEUP = 75
|
||||||
|
KEY_DELETE = 76
|
||||||
|
KEY_END = 77
|
||||||
|
KEY_PAGEDOWN = 78
|
||||||
|
KEY_RIGHT = 79
|
||||||
|
KEY_LEFT = 80
|
||||||
|
KEY_DOWN = 81
|
||||||
|
KEY_UP = 82
|
||||||
|
KEY_NUM_LOCK = 83
|
||||||
|
KEYPAD_SLASH = 84
|
||||||
|
KEYPAD_ASTERIX = 85
|
||||||
|
KEYPAD_MINUS = 86
|
||||||
|
KEYPAD_PLUS = 87
|
||||||
|
KEYPAD_ENTER = 88
|
||||||
|
KEYPAD_EQUALS = 103
|
||||||
|
KEYPAD_1 = 89
|
||||||
|
KEYPAD_2 = 90
|
||||||
|
KEYPAD_3 = 91
|
||||||
|
KEYPAD_4 = 92
|
||||||
|
KEYPAD_5 = 93
|
||||||
|
KEYPAD_6 = 94
|
||||||
|
KEYPAD_7 = 95
|
||||||
|
KEYPAD_8 = 96
|
||||||
|
KEYPAD_9 = 97
|
||||||
|
KEYPAD_0 = 98
|
||||||
|
KEYPAD_PERIOD = 99
|
||||||
|
|
||||||
|
KEY_APP = 0x65
|
||||||
|
KEY_POWER = 0x66
|
||||||
|
KEY_EXE = 0x74
|
||||||
|
KEY_HELP = 0x75
|
||||||
|
KEY_MENU = 0x76
|
||||||
|
KEY_SELECT = 0x77
|
||||||
|
KEY_STOP = 0x78
|
||||||
|
KEY_AGAIN = 0x79
|
||||||
|
KEY_UNDO = 0x7A
|
||||||
|
KEY_CUT = 0x7B
|
||||||
|
KEY_COPY = 0x7C
|
||||||
|
KEY_PASTE = 0x7D
|
||||||
|
KEY_FIND = 0x7E
|
||||||
|
|
||||||
|
KEY_SYSTEM_POWER = 0x81
|
||||||
|
KEY_SYSTEM_SLEEP = 0x82
|
||||||
|
KEY_SYSTEM_WAKE = 0x83
|
||||||
|
|
||||||
|
KEYPAD_PIPE = 0xC9
|
||||||
|
|
||||||
|
KEY_LEFT_CTRL = 0xE0
|
||||||
|
KEY_LEFT_SHIFT = 0xE1
|
||||||
|
KEY_LEFT_ALT = 0xE2
|
||||||
|
KEY_LEFT_GUI = 0xE3
|
||||||
|
KEY_COMMAND = 0xE3
|
||||||
|
KEY_RIGHT_CTRL = 0xE4
|
||||||
|
KEY_RIGHT_SHIFT= 0xE5
|
||||||
|
KEY_RIGHT_ALT = 0xE6
|
||||||
|
KEY_RIGHT_GUI = 0xE7
|
||||||
290
language/de.properties
Normal file
290
language/de.properties
Normal file
|
|
@ -0,0 +1,290 @@
|
||||||
|
//LAYOUT_GERMAN
|
||||||
|
//Credits go to webdirector for patch (02/17/2013)
|
||||||
|
KEY_NON_US_100 = 100
|
||||||
|
|
||||||
|
ASCII_20 = KEY_SPACE
|
||||||
|
// 32
|
||||||
|
ASCII_21 = KEY_1, MODIFIERKEY_SHIFT
|
||||||
|
// 33 !
|
||||||
|
ASCII_22 = KEY_2, MODIFIERKEY_SHIFT
|
||||||
|
// 34 "
|
||||||
|
ASCII_23 = KEY_BACKSLASH
|
||||||
|
// 35 # ??
|
||||||
|
ASCII_24 = KEY_4, MODIFIERKEY_SHIFT
|
||||||
|
// 36 $
|
||||||
|
ASCII_25 = KEY_5, MODIFIERKEY_SHIFT
|
||||||
|
// 37 %
|
||||||
|
ASCII_26 = KEY_6, MODIFIERKEY_SHIFT
|
||||||
|
// 38 &
|
||||||
|
ASCII_27 = KEY_BACKSLASH, MODIFIERKEY_SHIFT
|
||||||
|
// 39 '
|
||||||
|
ASCII_28 = KEY_8, MODIFIERKEY_SHIFT
|
||||||
|
// 40 (
|
||||||
|
ASCII_29 = KEY_9, MODIFIERKEY_SHIFT
|
||||||
|
// 41 )
|
||||||
|
ASCII_2A = KEY_RIGHT_BRACE, MODIFIERKEY_SHIFT
|
||||||
|
// 42 *
|
||||||
|
ASCII_2B = KEY_RIGHT_BRACE
|
||||||
|
// 43 +
|
||||||
|
ASCII_2C = KEY_COMMA
|
||||||
|
// 44 ,
|
||||||
|
ASCII_2D = KEY_SLASH
|
||||||
|
// 45 -
|
||||||
|
ASCII_2E = KEY_PERIOD
|
||||||
|
// 46 .
|
||||||
|
ASCII_2F = KEY_7, MODIFIERKEY_SHIFT
|
||||||
|
// 47 /
|
||||||
|
ASCII_30 = KEY_0
|
||||||
|
// 48 0
|
||||||
|
ASCII_31 = KEY_1
|
||||||
|
// 49 1
|
||||||
|
ASCII_32 = KEY_2
|
||||||
|
// 50 2
|
||||||
|
ASCII_33 = KEY_3
|
||||||
|
// 51 3
|
||||||
|
ASCII_34 = KEY_4
|
||||||
|
// 52 4
|
||||||
|
ASCII_35 = KEY_5
|
||||||
|
// 53 5
|
||||||
|
ASCII_36 = KEY_6
|
||||||
|
// 54 6
|
||||||
|
ASCII_37 = KEY_7
|
||||||
|
// 55 7
|
||||||
|
ASCII_38 = KEY_8
|
||||||
|
// 55 8
|
||||||
|
ASCII_39 = KEY_9
|
||||||
|
// 57 9
|
||||||
|
ASCII_3A = KEY_PERIOD, MODIFIERKEY_SHIFT
|
||||||
|
// 58 :
|
||||||
|
ASCII_3B = KEY_COMMA, MODIFIERKEY_SHIFT
|
||||||
|
// 59 ;
|
||||||
|
ASCII_3C = KEY_NON_US_100
|
||||||
|
// 60 <
|
||||||
|
ASCII_3D = KEY_0, MODIFIERKEY_SHIFT
|
||||||
|
// 61 =
|
||||||
|
ASCII_3E = KEY_NON_US_100, MODIFIERKEY_SHIFT
|
||||||
|
// 62 >
|
||||||
|
ASCII_3F = KEY_MINUS, MODIFIERKEY_SHIFT
|
||||||
|
// 63 ?
|
||||||
|
ASCII_40 = KEY_Q, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 64 @
|
||||||
|
ASCII_41 = KEY_A, MODIFIERKEY_SHIFT
|
||||||
|
// 65 A
|
||||||
|
ASCII_42 = KEY_B, MODIFIERKEY_SHIFT
|
||||||
|
// 66 B
|
||||||
|
ASCII_43 = KEY_C, MODIFIERKEY_SHIFT
|
||||||
|
// 67 C
|
||||||
|
ASCII_44 = KEY_D, MODIFIERKEY_SHIFT
|
||||||
|
// 68 D
|
||||||
|
ASCII_45 = KEY_E, MODIFIERKEY_SHIFT
|
||||||
|
// 69 E
|
||||||
|
ASCII_46 = KEY_F, MODIFIERKEY_SHIFT
|
||||||
|
// 70 F
|
||||||
|
ASCII_47 = KEY_G, MODIFIERKEY_SHIFT
|
||||||
|
// 71 G
|
||||||
|
ASCII_48 = KEY_H, MODIFIERKEY_SHIFT
|
||||||
|
// 72 H
|
||||||
|
ASCII_49 = KEY_I, MODIFIERKEY_SHIFT
|
||||||
|
// 73 I
|
||||||
|
ASCII_4A = KEY_J, MODIFIERKEY_SHIFT
|
||||||
|
// 74 J
|
||||||
|
ASCII_4B = KEY_K, MODIFIERKEY_SHIFT
|
||||||
|
// 75 K
|
||||||
|
ASCII_4C = KEY_L, MODIFIERKEY_SHIFT
|
||||||
|
// 76 L
|
||||||
|
ASCII_4D = KEY_M, MODIFIERKEY_SHIFT
|
||||||
|
// 77 M
|
||||||
|
ASCII_4E = KEY_N, MODIFIERKEY_SHIFT
|
||||||
|
// 78 N
|
||||||
|
ASCII_4F = KEY_O, MODIFIERKEY_SHIFT
|
||||||
|
// 79 O
|
||||||
|
ASCII_50 = KEY_P, MODIFIERKEY_SHIFT
|
||||||
|
// 80 P
|
||||||
|
ASCII_51 = KEY_Q, MODIFIERKEY_SHIFT
|
||||||
|
// 81 Q
|
||||||
|
ASCII_52 = KEY_R, MODIFIERKEY_SHIFT
|
||||||
|
// 82 R
|
||||||
|
ASCII_53 = KEY_S, MODIFIERKEY_SHIFT
|
||||||
|
// 83 S
|
||||||
|
ASCII_54 = KEY_T, MODIFIERKEY_SHIFT
|
||||||
|
// 84 T
|
||||||
|
ASCII_55 = KEY_U, MODIFIERKEY_SHIFT
|
||||||
|
// 85 U
|
||||||
|
ASCII_56 = KEY_V, MODIFIERKEY_SHIFT
|
||||||
|
// 86 V
|
||||||
|
ASCII_57 = KEY_W, MODIFIERKEY_SHIFT
|
||||||
|
// 87 W
|
||||||
|
ASCII_58 = KEY_X, MODIFIERKEY_SHIFT
|
||||||
|
// 88 X
|
||||||
|
ASCII_59 = KEY_Z, MODIFIERKEY_SHIFT
|
||||||
|
// 89 Y
|
||||||
|
ASCII_5A = KEY_Y, MODIFIERKEY_SHIFT
|
||||||
|
// 90 Z
|
||||||
|
ASCII_5B = KEY_8, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 91 [
|
||||||
|
ASCII_5C = KEY_MINUS, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 92
|
||||||
|
ASCII_5D = KEY_9, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 93 ]
|
||||||
|
ASCII_5E = KEY_TILDE
|
||||||
|
// 94 ^
|
||||||
|
ASCII_5F = KEY_SLASH, MODIFIERKEY_SHIFT
|
||||||
|
// 95 _
|
||||||
|
ASCII_60 = KEY_EQUAL, MODIFIERKEY_SHIFT
|
||||||
|
//GRAVE_ACCENT_BITS + KEY_SPACE
|
||||||
|
// 96 `
|
||||||
|
ASCII_61 = KEY_A
|
||||||
|
// 97 a
|
||||||
|
ASCII_62 = KEY_B
|
||||||
|
// 98 b
|
||||||
|
ASCII_63 = KEY_C
|
||||||
|
// 99 c
|
||||||
|
ASCII_64 = KEY_D
|
||||||
|
// 100 d
|
||||||
|
ASCII_65 = KEY_E
|
||||||
|
// 101 e
|
||||||
|
ASCII_66 = KEY_F
|
||||||
|
// 102 f
|
||||||
|
ASCII_67 = KEY_G
|
||||||
|
// 103 g
|
||||||
|
ASCII_68 = KEY_H
|
||||||
|
// 104 h
|
||||||
|
ASCII_69 = KEY_I
|
||||||
|
// 105 i
|
||||||
|
ASCII_6A = KEY_J
|
||||||
|
// 106 j
|
||||||
|
ASCII_6B = KEY_K
|
||||||
|
// 107 k
|
||||||
|
ASCII_6C = KEY_L
|
||||||
|
// 108 l
|
||||||
|
ASCII_6D = KEY_M
|
||||||
|
// 109 m
|
||||||
|
ASCII_6E = KEY_N
|
||||||
|
// 110 n
|
||||||
|
ASCII_6F = KEY_O
|
||||||
|
// 111 o
|
||||||
|
ASCII_70 = KEY_P
|
||||||
|
// 112 p
|
||||||
|
ASCII_71 = KEY_Q
|
||||||
|
// 113 q
|
||||||
|
ASCII_72 = KEY_R
|
||||||
|
// 114 r
|
||||||
|
ASCII_73 = KEY_S
|
||||||
|
// 115 s
|
||||||
|
ASCII_74 = KEY_T
|
||||||
|
// 116 t
|
||||||
|
ASCII_75 = KEY_U
|
||||||
|
// 117 u
|
||||||
|
ASCII_76 = KEY_V
|
||||||
|
// 118 v
|
||||||
|
ASCII_77 = KEY_W
|
||||||
|
// 119 w
|
||||||
|
ASCII_78 = KEY_X
|
||||||
|
// 120 x
|
||||||
|
ASCII_79 = KEY_Z
|
||||||
|
// 121 y
|
||||||
|
ASCII_7A = KEY_Y
|
||||||
|
// 122 z
|
||||||
|
ASCII_7B = KEY_7, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 123 {
|
||||||
|
ASCII_7C = KEY_NON_US_100, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 124 |
|
||||||
|
ASCII_7D = KEY_0, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 125 }
|
||||||
|
ASCII_7E = KEY_RIGHT_BRACE, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 126 ~
|
||||||
|
ASCII_7F = KEY_BACKSPACE
|
||||||
|
// 127
|
||||||
|
ISO_8859_1_A0 = KEY_SPACE
|
||||||
|
// 160 Nonbreakng Space
|
||||||
|
ISO_8859_1_A4 = KEY_E, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 164 ¤ Currency Sign
|
||||||
|
ISO_8859_1_A7 = KEY_3, MODIFIERKEY_SHIFT
|
||||||
|
// 167 § SECTION SIGN
|
||||||
|
ISO_8859_1_B0 = KEY_TILDE, MODIFIERKEY_SHIFT
|
||||||
|
// 176 ° DEGREE SIGN
|
||||||
|
ISO_8859_1_B2 = KEY_2, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 178 ² SUPERSCRIPT TWO
|
||||||
|
ISO_8859_1_B3 = KEY_3, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// 179 ³ SUPERSCRIPT THREE
|
||||||
|
//ISO_8859_1_C0 = GRAVE_ACCENT_BITS + KEY_A, MODIFIERKEY_SHIFT
|
||||||
|
// 192 À A GRAVE
|
||||||
|
//ISO_8859_1_C1 = ACUTE_ACCENT_BITS + KEY_A, MODIFIERKEY_SHIFT
|
||||||
|
// 193 Á A ACUTE
|
||||||
|
//ISO_8859_1_C2 = CIRCUMFLEX_BITS = + KEY_A, MODIFIERKEY_SHIFT
|
||||||
|
// 194 Â A CIRCUMFLEX
|
||||||
|
ISO_8859_1_C4 = KEY_QUOTE, MODIFIERKEY_SHIFT
|
||||||
|
// 196 Ä A DIAERESIS
|
||||||
|
//ISO_8859_1_C8 = GRAVE_ACCENT_BITS + KEY_E, MODIFIERKEY_SHIFT
|
||||||
|
// 200 È E GRAVE
|
||||||
|
//ISO_8859_1_C9 = ACUTE_ACCENT_BITS + KEY_E, MODIFIERKEY_SHIFT
|
||||||
|
// 201 É E ACUTE
|
||||||
|
//ISO_8859_1_CA = CIRCUMFLEX_BITS + KEY_E, MODIFIERKEY_SHIFT
|
||||||
|
// 202 Ê E CIRCUMFLEX
|
||||||
|
//ISO_8859_1_CC = GRAVE_ACCENT_BITS + KEY_I, MODIFIERKEY_SHIFT
|
||||||
|
// 204 Ì I GRAVE
|
||||||
|
//ISO_8859_1_CD = ACUTE_ACCENT_BITS + KEY_I, MODIFIERKEY_SHIFT
|
||||||
|
// 205 Í I ACUTE
|
||||||
|
//ISO_8859_1_CE = CIRCUMFLEX_BITS + KEY_I, MODIFIERKEY_SHIFT
|
||||||
|
// 206 Î I CIRCUMFLEX
|
||||||
|
//ISO_8859_1_D2 = GRAVE_ACCENT_BITS + KEY_O, MODIFIERKEY_SHIFT
|
||||||
|
// 210 Ò O GRAVE
|
||||||
|
//ISO_8859_1_D3 = ACUTE_ACCENT_BITS + KEY_O, MODIFIERKEY_SHIFT
|
||||||
|
// 211 Ó O ACUTE
|
||||||
|
//ISO_8859_1_D4 = CIRCUMFLEX_BITS + KEY_O, MODIFIERKEY_SHIFT
|
||||||
|
// 212 Ô O CIRCUMFLEX
|
||||||
|
ISO_8859_1_D6 = KEY_SEMICOLON, MODIFIERKEY_SHIFT
|
||||||
|
// 214 Ö O DIAERESIS
|
||||||
|
//ISO_8859_1_D9 = GRAVE_ACCENT_BITS + KEY_U, MODIFIERKEY_SHIFT
|
||||||
|
// 217 Ù U GRAVE
|
||||||
|
//ISO_8859_1_DA = ACUTE_ACCENT_BITS + KEY_U, MODIFIERKEY_SHIFT
|
||||||
|
// 218 Ú U ACUTE
|
||||||
|
//ISO_8859_1_DB = CIRCUMFLEX_BITS + KEY_U, MODIFIERKEY_SHIFT
|
||||||
|
// 219 Û U CIRCUMFLEX
|
||||||
|
ISO_8859_1_DC = KEY_LEFT_BRACE, MODIFIERKEY_SHIFT
|
||||||
|
// 220 Ü U DIAERESIS
|
||||||
|
//ISO_8859_1_DD = ACUTE_ACCENT_BITS + KEY_Z, MODIFIERKEY_SHIFT
|
||||||
|
// 221 Ý Y ACUTE
|
||||||
|
ISO_8859_1_DF = KEY_MINUS
|
||||||
|
// 223 ß SHARP S
|
||||||
|
//ISO_8859_1_E0 = GRAVE_ACCENT_BITS + KEY_A
|
||||||
|
// 224 à a GRAVE
|
||||||
|
//ISO_8859_1_E1 = ACUTE_ACCENT_BITS + KEY_A
|
||||||
|
// 225 á a ACUTE
|
||||||
|
//ISO_8859_1_E2 = CIRCUMFLEX_BITS + KEY_A
|
||||||
|
// 226 â a CIRCUMFLEX
|
||||||
|
ISO_8859_1_E4 = KEY_QUOTE
|
||||||
|
// 228 ä a DIAERESIS
|
||||||
|
//ISO_8859_1_E8 = GRAVE_ACCENT_BITS + KEY_E
|
||||||
|
// 232 è e GRAVE
|
||||||
|
//ISO_8859_1_E9 = ACUTE_ACCENT_BITS + KEY_E
|
||||||
|
// 233 é e ACUTE
|
||||||
|
//ISO_8859_1_EA = CIRCUMFLEX_BITS + KEY_E
|
||||||
|
// 234 ê e CIRCUMFLEX
|
||||||
|
//ISO_8859_1_EC = GRAVE_ACCENT_BITS + KEY_I
|
||||||
|
// 236 ì i GRAVE
|
||||||
|
//ISO_8859_1_ED = ACUTE_ACCENT_BITS + KEY_I
|
||||||
|
// 237 í i ACUTE
|
||||||
|
//ISO_8859_1_EE = CIRCUMFLEX_BITS + KEY_I
|
||||||
|
// 238 î i CIRCUMFLEX
|
||||||
|
//ISO_8859_1_F2 = GRAVE_ACCENT_BITS + KEY_O
|
||||||
|
// 242 ò o GRAVE
|
||||||
|
//ISO_8859_1_F3 = ACUTE_ACCENT_BITS + KEY_O
|
||||||
|
// 243 ó o ACUTE
|
||||||
|
//ISO_8859_1_F4 = CIRCUMFLEX_BITS + KEY_O
|
||||||
|
// 244 ô o CIRCUMFLEX
|
||||||
|
ISO_8859_1_F6 = KEY_SEMICOLON
|
||||||
|
// 246 ö o DIAERESIS
|
||||||
|
//ISO_8859_1_F9 = GRAVE_ACCENT_BITS + KEY_U
|
||||||
|
// 249 ù u GRAVE
|
||||||
|
//ISO_8859_1_FA = ACUTE_ACCENT_BITS + KEY_U
|
||||||
|
// 250 ú u ACUTE
|
||||||
|
//ISO_8859_1_FB = CIRCUMFLEX_BITS + KEY_U
|
||||||
|
// 251 û u CIRCUMFLEX
|
||||||
|
ISO_8859_1_FC = KEY_LEFT_BRACE
|
||||||
|
// 252 ü u DIAERESIS
|
||||||
|
//ISO_8859_1_FD = ACUTE_ACCENT_BITS + KEY_Z
|
||||||
|
// 253 ý y ACUTE
|
||||||
|
UNICODE_20AC = KEY_E, MODIFIERKEY_RIGHT_ALT
|
||||||
|
// € Euro Sign
|
||||||
|
|
||||||
33
main.go
Normal file
33
main.go
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"git.giftfish.de/ston1th/duckycode/pkg/encode"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// var buf = bytes.NewBufferString(`
|
||||||
|
//REM The next three lines execute a command prompt in Windows
|
||||||
|
//GUI r
|
||||||
|
//STRING cmd
|
||||||
|
//ENTER
|
||||||
|
//`)
|
||||||
|
var buf = bytes.NewBufferString(`
|
||||||
|
REM Type Hello World into Windows notepad. Target: Windows 95 and beyond. Author: Darren
|
||||||
|
DELAY 1000
|
||||||
|
GUI r
|
||||||
|
DELAY 100
|
||||||
|
STRING c:\windows\notepad.exe
|
||||||
|
ENTER
|
||||||
|
DELAY 1000
|
||||||
|
STRING Hello World
|
||||||
|
`)
|
||||||
|
e := encode.NewEncoder(buf, "de")
|
||||||
|
b, err := e.Encode()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
|
os.Stdout.Write(b)
|
||||||
|
}
|
||||||
202
pkg/encode/encode.go
Normal file
202
pkg/encode/encode.go
Normal file
|
|
@ -0,0 +1,202 @@
|
||||||
|
package encode
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"git.giftfish.de/ston1th/duckycode/pkg/lang"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Encoder struct {
|
||||||
|
reader io.Reader
|
||||||
|
language string
|
||||||
|
defaultDelay int
|
||||||
|
delayOverride bool
|
||||||
|
loop int
|
||||||
|
repeat bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewEncoder(r io.Reader, language string) *Encoder {
|
||||||
|
if language == "" {
|
||||||
|
language = "de"
|
||||||
|
}
|
||||||
|
return &Encoder{r, language, 0, false, 0, false}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Encoder) Encode() (buf []byte, err error) {
|
||||||
|
scanner := bufio.NewScanner(e.reader)
|
||||||
|
for scanner.Scan() {
|
||||||
|
if err = scanner.Err(); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s := strings.SplitN(scanner.Text(), " ", 2)
|
||||||
|
|
||||||
|
switch len(s) {
|
||||||
|
case 1:
|
||||||
|
if b := e.instruction(s[0]); b != 0 {
|
||||||
|
fmt.Fprintf(os.Stderr, "%s\n", s[0])
|
||||||
|
buf = append(buf, []byte{b, 0}...)
|
||||||
|
fmt.Fprintf(os.Stderr, "%#v\n", buf)
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
fmt.Fprintf(os.Stderr, "%s:%s\n", s[0], s[1])
|
||||||
|
buf = append(buf, e.instructionData(s[0], s[1])...)
|
||||||
|
fmt.Fprintf(os.Stderr, "%#v\n", buf)
|
||||||
|
}
|
||||||
|
if !e.delayOverride && e.defaultDelay > 0 {
|
||||||
|
delayCounter := e.defaultDelay
|
||||||
|
for delayCounter > 0 {
|
||||||
|
buf = append(buf, byte(0))
|
||||||
|
if delayCounter > 255 {
|
||||||
|
buf = append(buf, byte(255))
|
||||||
|
delayCounter -= 255
|
||||||
|
} else {
|
||||||
|
buf = append(buf, byte(delayCounter))
|
||||||
|
delayCounter = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Encoder) instruction(in string) byte {
|
||||||
|
if b, ok := lang.K["KEY_"+in]; ok {
|
||||||
|
return b
|
||||||
|
}
|
||||||
|
switch in {
|
||||||
|
case "", "REM":
|
||||||
|
return 0
|
||||||
|
case "ESCAPE":
|
||||||
|
return e.instruction("ESC")
|
||||||
|
case "DEL":
|
||||||
|
return e.instruction("DELETE")
|
||||||
|
case "BREAK":
|
||||||
|
return e.instruction("PAUSE")
|
||||||
|
case "CONTROL":
|
||||||
|
return e.instruction("CTRL")
|
||||||
|
case "DOWNARROW":
|
||||||
|
return e.instruction("DOWM")
|
||||||
|
case "UPARROW":
|
||||||
|
return e.instruction("UP")
|
||||||
|
case "LEFTARROW":
|
||||||
|
return e.instruction("LEFT")
|
||||||
|
case "RIGHTARROW":
|
||||||
|
return e.instruction("RIGHT")
|
||||||
|
case "MENU":
|
||||||
|
return e.instruction("APP")
|
||||||
|
case "WINDOWS":
|
||||||
|
return e.instruction("GUI")
|
||||||
|
case "PLAY":
|
||||||
|
return e.instruction("MEDIA_PLAY_PAUSE")
|
||||||
|
case "MUTE":
|
||||||
|
return e.instruction("MEDIA_MUTE")
|
||||||
|
case "VOLUMEUP":
|
||||||
|
return e.instruction("MEDIA_VOLUME_INC")
|
||||||
|
case "VOLUMEDOWN":
|
||||||
|
return e.instruction("MEDIAVOLUME_DEC")
|
||||||
|
case "SCROLLLOCK":
|
||||||
|
return e.instruction("SCROLL_LOCK")
|
||||||
|
case "NUMLOCK":
|
||||||
|
return e.instruction("NUM_LOCK")
|
||||||
|
case "CAPSLOCK":
|
||||||
|
return e.instruction("CAPS_LOCK")
|
||||||
|
|
||||||
|
case "CTRL":
|
||||||
|
return e.instruction("LEFT_CTRL")
|
||||||
|
case "ALT":
|
||||||
|
return e.instruction("LEFT_ALT")
|
||||||
|
case "SHIFT":
|
||||||
|
return e.instruction("LEFT_SHIFT")
|
||||||
|
case "ALT-SHIFT":
|
||||||
|
//TODO
|
||||||
|
return 0
|
||||||
|
case "ALT-TAB":
|
||||||
|
//TODO
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return e.encodeRune(rune(in[0]))[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Encoder) instructionData(in string, data string) (b []byte) {
|
||||||
|
switch in {
|
||||||
|
case "DEFAULT_DELAY", "DEFAULTDELAY":
|
||||||
|
delay, err := strconv.Atoi(data)
|
||||||
|
if err == nil {
|
||||||
|
e.defaultDelay = delay
|
||||||
|
e.delayOverride = true
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
case "DELAY":
|
||||||
|
delay, err := strconv.Atoi(data)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for delay > 0 {
|
||||||
|
b = append(b, byte(0))
|
||||||
|
if delay > 255 {
|
||||||
|
b = append(b, byte(255))
|
||||||
|
delay -= 255
|
||||||
|
} else {
|
||||||
|
b = append(b, byte(delay))
|
||||||
|
delay = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.delayOverride = true
|
||||||
|
return
|
||||||
|
case "", "REM":
|
||||||
|
return nil
|
||||||
|
case "STRING":
|
||||||
|
for _, r := range data {
|
||||||
|
enc := e.encodeRune(r)
|
||||||
|
if len(enc)%2 != 0 {
|
||||||
|
enc = append(enc, byte(0))
|
||||||
|
}
|
||||||
|
b = append(b, enc...)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
case "CONTROL", "CTRL":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_CTRL"]}
|
||||||
|
case "ALT":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_ALT"]}
|
||||||
|
case "SHIFT":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_SHIFT"]}
|
||||||
|
case "CTRL-ALT":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_CTRL"] | lang.K["MODIFIERKEY_ALT"]}
|
||||||
|
case "CTRL-SHIFT":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_CTRL"] | lang.K["MODIFIERKEY_SHIFT"]}
|
||||||
|
case "COMMAND-OPTION":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_LEFT_GUI"] | lang.K["MODIFIERKEY_ALT"]}
|
||||||
|
case "ALT-SHIFT":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_LEFT_ALT"] | lang.K["MODIFIERKEY_SHIFT"]}
|
||||||
|
case "WINDOWS", "GUI", "COMMAND":
|
||||||
|
return []byte{e.instruction(data), lang.K["MODIFIERKEY_LEFT_GUI"]}
|
||||||
|
}
|
||||||
|
return []byte{e.instruction(data), 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Encoder) encodeRune(r rune) []byte {
|
||||||
|
var code string
|
||||||
|
hex := strings.ToUpper(strconv.FormatUint(uint64(r), 16))
|
||||||
|
switch {
|
||||||
|
case r < 128:
|
||||||
|
code = "ASCII_" + hex
|
||||||
|
case r < 256:
|
||||||
|
code = "ISO_8859_1_" + hex
|
||||||
|
default:
|
||||||
|
code = "UNICODE_" + hex
|
||||||
|
}
|
||||||
|
if b, ok := lang.K[code]; ok {
|
||||||
|
return []byte{b}
|
||||||
|
} else if k, ok := lang.Langs[e.language][code]; ok {
|
||||||
|
if k.Mod != 0 {
|
||||||
|
return []byte{k.Key, k.Mod}
|
||||||
|
}
|
||||||
|
return []byte{k.Key}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
116
pkg/lang/de.go
Normal file
116
pkg/lang/de.go
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
package lang
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
l := make(Lang)
|
||||||
|
l["ASCII_20"] = Key{K["KEY_SPACE"], K[""]}
|
||||||
|
l["ASCII_21"] = Key{K["KEY_1"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_22"] = Key{K["KEY_2"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_23"] = Key{K["KEY_BACKSLASH"], K[""]}
|
||||||
|
l["ASCII_24"] = Key{K["KEY_4"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_25"] = Key{K["KEY_5"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_26"] = Key{K["KEY_6"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_27"] = Key{K["KEY_BACKSLASH"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_28"] = Key{K["KEY_8"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_29"] = Key{K["KEY_9"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_2A"] = Key{K["KEY_RIGHT_BRACE"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_2B"] = Key{K["KEY_RIGHT_BRACE"], K[""]}
|
||||||
|
l["ASCII_2C"] = Key{K["KEY_COMMA"], K[""]}
|
||||||
|
l["ASCII_2D"] = Key{K["KEY_SLASH"], K[""]}
|
||||||
|
l["ASCII_2E"] = Key{K["KEY_PERIOD"], K[""]}
|
||||||
|
l["ASCII_2F"] = Key{K["KEY_7"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_30"] = Key{K["KEY_0"], K[""]}
|
||||||
|
l["ASCII_31"] = Key{K["KEY_1"], K[""]}
|
||||||
|
l["ASCII_32"] = Key{K["KEY_2"], K[""]}
|
||||||
|
l["ASCII_33"] = Key{K["KEY_3"], K[""]}
|
||||||
|
l["ASCII_34"] = Key{K["KEY_4"], K[""]}
|
||||||
|
l["ASCII_35"] = Key{K["KEY_5"], K[""]}
|
||||||
|
l["ASCII_36"] = Key{K["KEY_6"], K[""]}
|
||||||
|
l["ASCII_37"] = Key{K["KEY_7"], K[""]}
|
||||||
|
l["ASCII_38"] = Key{K["KEY_8"], K[""]}
|
||||||
|
l["ASCII_39"] = Key{K["KEY_9"], K[""]}
|
||||||
|
l["ASCII_3A"] = Key{K["KEY_PERIOD"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_3B"] = Key{K["KEY_COMMA"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_3C"] = Key{K["KEY_NON_US_100"], K[""]}
|
||||||
|
l["ASCII_3D"] = Key{K["KEY_0"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_3E"] = Key{K["KEY_NON_US_100"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_3F"] = Key{K["KEY_MINUS"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_40"] = Key{K["KEY_Q"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_41"] = Key{K["KEY_A"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_42"] = Key{K["KEY_B"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_43"] = Key{K["KEY_C"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_44"] = Key{K["KEY_D"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_45"] = Key{K["KEY_E"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_46"] = Key{K["KEY_F"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_47"] = Key{K["KEY_G"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_48"] = Key{K["KEY_H"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_49"] = Key{K["KEY_I"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4A"] = Key{K["KEY_J"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4B"] = Key{K["KEY_K"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4C"] = Key{K["KEY_L"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4D"] = Key{K["KEY_M"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4E"] = Key{K["KEY_N"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_4F"] = Key{K["KEY_O"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_50"] = Key{K["KEY_P"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_51"] = Key{K["KEY_Q"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_52"] = Key{K["KEY_R"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_53"] = Key{K["KEY_S"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_54"] = Key{K["KEY_T"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_55"] = Key{K["KEY_U"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_56"] = Key{K["KEY_V"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_57"] = Key{K["KEY_W"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_58"] = Key{K["KEY_X"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_59"] = Key{K["KEY_Z"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_5A"] = Key{K["KEY_Y"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_5B"] = Key{K["KEY_8"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_5C"] = Key{K["KEY_MINUS"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_5D"] = Key{K["KEY_9"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_5E"] = Key{K["KEY_TILDE"], K[""]}
|
||||||
|
l["ASCII_5F"] = Key{K["KEY_SLASH"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_60"] = Key{K["KEY_EQUAL"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ASCII_61"] = Key{K["KEY_A"], K[""]}
|
||||||
|
l["ASCII_62"] = Key{K["KEY_B"], K[""]}
|
||||||
|
l["ASCII_63"] = Key{K["KEY_C"], K[""]}
|
||||||
|
l["ASCII_64"] = Key{K["KEY_D"], K[""]}
|
||||||
|
l["ASCII_65"] = Key{K["KEY_E"], K[""]}
|
||||||
|
l["ASCII_66"] = Key{K["KEY_F"], K[""]}
|
||||||
|
l["ASCII_67"] = Key{K["KEY_G"], K[""]}
|
||||||
|
l["ASCII_68"] = Key{K["KEY_H"], K[""]}
|
||||||
|
l["ASCII_69"] = Key{K["KEY_I"], K[""]}
|
||||||
|
l["ASCII_6A"] = Key{K["KEY_J"], K[""]}
|
||||||
|
l["ASCII_6B"] = Key{K["KEY_K"], K[""]}
|
||||||
|
l["ASCII_6C"] = Key{K["KEY_L"], K[""]}
|
||||||
|
l["ASCII_6D"] = Key{K["KEY_M"], K[""]}
|
||||||
|
l["ASCII_6E"] = Key{K["KEY_N"], K[""]}
|
||||||
|
l["ASCII_6F"] = Key{K["KEY_O"], K[""]}
|
||||||
|
l["ASCII_70"] = Key{K["KEY_P"], K[""]}
|
||||||
|
l["ASCII_71"] = Key{K["KEY_Q"], K[""]}
|
||||||
|
l["ASCII_72"] = Key{K["KEY_R"], K[""]}
|
||||||
|
l["ASCII_73"] = Key{K["KEY_S"], K[""]}
|
||||||
|
l["ASCII_74"] = Key{K["KEY_T"], K[""]}
|
||||||
|
l["ASCII_75"] = Key{K["KEY_U"], K[""]}
|
||||||
|
l["ASCII_76"] = Key{K["KEY_V"], K[""]}
|
||||||
|
l["ASCII_77"] = Key{K["KEY_W"], K[""]}
|
||||||
|
l["ASCII_78"] = Key{K["KEY_X"], K[""]}
|
||||||
|
l["ASCII_79"] = Key{K["KEY_Z"], K[""]}
|
||||||
|
l["ASCII_7A"] = Key{K["KEY_Y"], K[""]}
|
||||||
|
l["ASCII_7B"] = Key{K["KEY_7"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_7C"] = Key{K["KEY_NON_US_100"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_7D"] = Key{K["KEY_0"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_7E"] = Key{K["KEY_RIGHT_BRACE"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ASCII_7F"] = Key{K["KEY_BACKSPACE"], K[""]}
|
||||||
|
l["ISO_8859_1_A0"] = Key{K["KEY_SPACE"], K[""]}
|
||||||
|
l["ISO_8859_1_A4"] = Key{K["KEY_E"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ISO_8859_1_A7"] = Key{K["KEY_3"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ISO_8859_1_B0"] = Key{K["KEY_TILDE"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ISO_8859_1_B2"] = Key{K["KEY_2"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ISO_8859_1_B3"] = Key{K["KEY_3"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
l["ISO_8859_1_C4"] = Key{K["KEY_QUOTE"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ISO_8859_1_D6"] = Key{K["KEY_SEMICOLON"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ISO_8859_1_DC"] = Key{K["KEY_LEFT_BRACE"], K["MODIFIERKEY_SHIFT"]}
|
||||||
|
l["ISO_8859_1_DF"] = Key{K["KEY_MINUS"], K[""]}
|
||||||
|
l["ISO_8859_1_E4"] = Key{K["KEY_QUOTE"], K[""]}
|
||||||
|
l["ISO_8859_1_F6"] = Key{K["KEY_SEMICOLON"], K[""]}
|
||||||
|
l["ISO_8859_1_FC"] = Key{K["KEY_LEFT_BRACE"], K[""]}
|
||||||
|
l["UNICODE_20AC"] = Key{K["KEY_E"], K["MODIFIERKEY_RIGHT_ALT"]}
|
||||||
|
Langs["de"] = l
|
||||||
|
}
|
||||||
146
pkg/lang/keyboard.go
Normal file
146
pkg/lang/keyboard.go
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
package lang
|
||||||
|
|
||||||
|
var K = map[string]byte{
|
||||||
|
"": 0,
|
||||||
|
"MODIFIERKEY_CTRL": 0x01,
|
||||||
|
"MODIFIERKEY_SHIFT": 0x02,
|
||||||
|
"MODIFIERKEY_ALT": 0x04,
|
||||||
|
"MODIFIERKEY_GUI": 0x08,
|
||||||
|
"MODIFIERKEY_LEFT_CTRL": 0x01,
|
||||||
|
"MODIFIERKEY_LEFT_SHIFT": 0x02,
|
||||||
|
"MODIFIERKEY_LEFT_ALT": 0x04,
|
||||||
|
"MODIFIERKEY_LEFT_GUI": 0x08,
|
||||||
|
"MODIFIERKEY_RIGHT_CTRL": 0x10,
|
||||||
|
"MODIFIERKEY_RIGHT_SHIFT": 0x20,
|
||||||
|
"MODIFIERKEY_RIGHT_ALT": 0x40,
|
||||||
|
"MODIFIERKEY_RIGHT_GUI": 0x80,
|
||||||
|
"KEY_MEDIA_VOLUME_INC": 0x80,
|
||||||
|
"KEY_MEDIA_VOLUME_DEC": 0x81,
|
||||||
|
"KEY_MEDIA_MUTE": 0x7F,
|
||||||
|
"KEY_MEDIA_PLAY_PAUSE": 0x08,
|
||||||
|
"KEY_MEDIA_NEXT_TRACK": 0x10,
|
||||||
|
"KEY_MEDIA_PREV_TRACK": 0x20,
|
||||||
|
"KEY_A": 4,
|
||||||
|
"KEY_B": 5,
|
||||||
|
"KEY_C": 6,
|
||||||
|
"KEY_D": 7,
|
||||||
|
"KEY_E": 8,
|
||||||
|
"KEY_F": 9,
|
||||||
|
"KEY_G": 10,
|
||||||
|
"KEY_H": 11,
|
||||||
|
"KEY_I": 12,
|
||||||
|
"KEY_J": 13,
|
||||||
|
"KEY_K": 14,
|
||||||
|
"KEY_L": 15,
|
||||||
|
"KEY_M": 16,
|
||||||
|
"KEY_N": 17,
|
||||||
|
"KEY_O": 18,
|
||||||
|
"KEY_P": 19,
|
||||||
|
"KEY_Q": 20,
|
||||||
|
"KEY_R": 21,
|
||||||
|
"KEY_S": 22,
|
||||||
|
"KEY_T": 23,
|
||||||
|
"KEY_U": 24,
|
||||||
|
"KEY_V": 25,
|
||||||
|
"KEY_W": 26,
|
||||||
|
"KEY_X": 27,
|
||||||
|
"KEY_Y": 28,
|
||||||
|
"KEY_Z": 29,
|
||||||
|
"KEY_1": 30,
|
||||||
|
"KEY_2": 31,
|
||||||
|
"KEY_3": 32,
|
||||||
|
"KEY_4": 33,
|
||||||
|
"KEY_5": 34,
|
||||||
|
"KEY_6": 35,
|
||||||
|
"KEY_7": 36,
|
||||||
|
"KEY_8": 37,
|
||||||
|
"KEY_9": 38,
|
||||||
|
"KEY_0": 39,
|
||||||
|
"KEY_ENTER": 40,
|
||||||
|
"KEY_ESC": 41,
|
||||||
|
"KEY_BACKSPACE": 42,
|
||||||
|
"KEY_TAB": 43,
|
||||||
|
"KEY_SPACE": 44,
|
||||||
|
"KEY_MINUS": 45,
|
||||||
|
"KEY_EQUAL": 46,
|
||||||
|
"KEY_LEFT_BRACE": 47,
|
||||||
|
"KEY_RIGHT_BRACE": 48,
|
||||||
|
"KEY_BACKSLASH": 49,
|
||||||
|
"KEY_NON_US_NUM": 50,
|
||||||
|
"KEY_SEMICOLON": 51,
|
||||||
|
"KEY_QUOTE": 52,
|
||||||
|
"KEY_TILDE": 53,
|
||||||
|
"KEY_COMMA": 54,
|
||||||
|
"KEY_PERIOD": 55,
|
||||||
|
"KEY_SLASH": 56,
|
||||||
|
"KEY_CAPS_LOCK": 57,
|
||||||
|
"KEY_F1": 58,
|
||||||
|
"KEY_F2": 59,
|
||||||
|
"KEY_F3": 60,
|
||||||
|
"KEY_F4": 61,
|
||||||
|
"KEY_F5": 62,
|
||||||
|
"KEY_F6": 63,
|
||||||
|
"KEY_F7": 64,
|
||||||
|
"KEY_F8": 65,
|
||||||
|
"KEY_F9": 66,
|
||||||
|
"KEY_F10": 67,
|
||||||
|
"KEY_F11": 68,
|
||||||
|
"KEY_F12": 69,
|
||||||
|
"KEY_PRINTSCREEN": 70,
|
||||||
|
"KEY_SCROLL_LOCK": 71,
|
||||||
|
"KEY_PAUSE": 72,
|
||||||
|
"KEY_INSERT": 73,
|
||||||
|
"KEY_HOME": 74,
|
||||||
|
"KEY_PAGEUP": 75,
|
||||||
|
"KEY_DELETE": 76,
|
||||||
|
"KEY_END": 77,
|
||||||
|
"KEY_PAGEDOWN": 78,
|
||||||
|
"KEY_RIGHT": 79,
|
||||||
|
"KEY_LEFT": 80,
|
||||||
|
"KEY_DOWN": 81,
|
||||||
|
"KEY_UP": 82,
|
||||||
|
"KEY_NUM_LOCK": 83,
|
||||||
|
"KEYPAD_SLASH": 84,
|
||||||
|
"KEYPAD_ASTERIX": 85,
|
||||||
|
"KEYPAD_MINUS": 86,
|
||||||
|
"KEYPAD_PLUS": 87,
|
||||||
|
"KEYPAD_ENTER": 88,
|
||||||
|
"KEYPAD_EQUALS": 103,
|
||||||
|
"KEYPAD_1": 89,
|
||||||
|
"KEYPAD_2": 90,
|
||||||
|
"KEYPAD_3": 91,
|
||||||
|
"KEYPAD_4": 92,
|
||||||
|
"KEYPAD_5": 93,
|
||||||
|
"KEYPAD_6": 94,
|
||||||
|
"KEYPAD_7": 95,
|
||||||
|
"KEYPAD_8": 96,
|
||||||
|
"KEYPAD_9": 97,
|
||||||
|
"KEYPAD_0": 98,
|
||||||
|
"KEYPAD_PERIOD": 99,
|
||||||
|
"KEY_APP": 0x65,
|
||||||
|
"KEY_POWER": 0x66,
|
||||||
|
"KEY_EXE": 0x74,
|
||||||
|
"KEY_HELP": 0x75,
|
||||||
|
"KEY_MENU": 0x76,
|
||||||
|
"KEY_SELECT": 0x77,
|
||||||
|
"KEY_STOP": 0x78,
|
||||||
|
"KEY_AGAIN": 0x79,
|
||||||
|
"KEY_UNDO": 0x7A,
|
||||||
|
"KEY_CUT": 0x7B,
|
||||||
|
"KEY_COPY": 0x7C,
|
||||||
|
"KEY_PASTE": 0x7D,
|
||||||
|
"KEY_FIND": 0x7E,
|
||||||
|
"KEY_SYSTEM_POWER": 0x81,
|
||||||
|
"KEY_SYSTEM_SLEEP": 0x82,
|
||||||
|
"KEY_SYSTEM_WAKE": 0x83,
|
||||||
|
"KEYPAD_PIPE": 0xC9,
|
||||||
|
"KEY_LEFT_CTRL": 0xE0,
|
||||||
|
"KEY_LEFT_SHIFT": 0xE1,
|
||||||
|
"KEY_LEFT_ALT": 0xE2,
|
||||||
|
"KEY_LEFT_GUI": 0xE3,
|
||||||
|
"KEY_COMMAND": 0xE3,
|
||||||
|
"KEY_RIGHT_CTRL": 0xE4,
|
||||||
|
"KEY_RIGHT_SHIFT": 0xE5,
|
||||||
|
"KEY_RIGHT_ALT": 0xE6,
|
||||||
|
"KEY_RIGHT_GUI": 0xE7,
|
||||||
|
}
|
||||||
10
pkg/lang/lang.go
Normal file
10
pkg/lang/lang.go
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
package lang
|
||||||
|
|
||||||
|
var Langs = make(map[string]Lang)
|
||||||
|
|
||||||
|
type Lang map[string]Key
|
||||||
|
|
||||||
|
type Key struct {
|
||||||
|
Key byte
|
||||||
|
Mod byte
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue