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