]> git.gir.st - sendHID.git/blob - scancodes.c
initial code import
[sendHID.git] / scancodes.c
1 #include <string.h>
2 #include "scancodes.h"
3
4 struct keysym keysyms[] = {
5 /*[0] = {"", {NULL, NULL}, {NULL, NULL}},*/
6 [1] = {"ä", {0x00, 0x00}, {0x34, 0x00}, .unicode = 0xe4},
7 {"Ä", {0x00, 0x00}, {0x34, 0x02}, .unicode = 0xc4},
8 {"ö", {0x00, 0x00}, {0x33, 0x00}, .unicode = 0xf6},
9 {"Ö", {0x00, 0x00}, {0x33, 0x02}, .unicode = 0xd6},
10 {"ü", {0x00, 0x00}, {0x2f, 0x00}, .unicode = 0xfc},
11 {"Ü", {0x00, 0x00}, {0x2f, 0x02}, .unicode = 0xdc},
12 {"ß", {0x00, 0x00}, {0x2d, 0x00}, .unicode = 0xdf},
13 {"€", {0x00, 0x00}, {0x08, 0x40}, .unicode = 0x20ac},
14 {"µ", {0x00, 0x00}, {0x10, 0x40}, .unicode = 0x3bc},
15 {"°", {0x00, 0x00}, {0x35, 0x02}, .unicode = 0xb0},
16 {"§", {0x00, 0x00}, {0x20, 0x02}, .unicode = 0xa7},
17 [32] = {" ", {0x2c, 0x00}, {0x2c, 0x00}},
18 {"!", {0x1e, 0x02}, {0x1e, 0x02}},
19 {"\"",{0x34, 0x02}, {0x1f, 0x02}},
20 {"#", {0x20, 0x02}, {0x31, 0x00}},
21 {"$", {0x21, 0x02}, {0x21, 0x02}},
22 {"%", {0x22, 0x02}, {0x22, 0x02}},
23 {"&", {0x24, 0x02}, {0x23, 0x02}},
24 {"'", {0x34, 0x00}, {0x31, 0x02}},
25 {"(", {0x26, 0x02}, {0x25, 0x02}},
26 {")", {0x27, 0x02}, {0x26, 0x02}},
27 {"*", {0x25, 0x02}, {0x30, 0x02}},
28 {"+", {0x2e, 0x02}, {0x30, 0x00}},
29 {"´", {0x32, 0x00}, {0x2e, 0x00, 1}},
30 {"-", {0x2d, 0x00}, {0x38, 0x00}},
31 {".", {0x37, 0x00}, {0x37, 0x00}},
32 {"/", {0x38, 0x00}, {0x24, 0x02}},
33 {"0", {0x27, 0x00}, {0x27, 0x00}},
34 {"1", {0x1e, 0x00}, {0x1e, 0x00}},
35 {"2", {0x1f, 0x00}, {0x1f, 0x00}},
36 {"3", {0x20, 0x00}, {0x20, 0x00}},
37 {"4", {0x21, 0x00}, {0x21, 0x00}},
38 {"5", {0x22, 0x00}, {0x22, 0x00}},
39 {"6", {0x23, 0x00}, {0x23, 0x00}},
40 {"7", {0x24, 0x00}, {0x24, 0x00}},
41 {"8", {0x25, 0x00}, {0x25, 0x00}},
42 {"9", {0x26, 0x00}, {0x26, 0x00}},
43 {":", {0x33, 0x02}, {0x37, 0x02}},
44 {";", {0x33, 0x00}, {0x36, 0x02}},
45 {"<", {0x36, 0x02}, {0x64, 0x00}},
46 {"=", {0x2e, 0x00}, {0x27, 0x02}},
47 {">", {0x37, 0x02}, {0x64, 0x02}},
48 {"?", {0x38, 0x02}, {0x2d, 0x02}},
49 {"@", {0x1f, 0x02}, {0x14, 0x40}},
50 {"A", {0x04, 0x02}, {0x04, 0x02}},
51 {"B", {0x05, 0x02}, {0x05, 0x02}},
52 {"C", {0x06, 0x02}, {0x06, 0x02}},
53 {"D", {0x07, 0x02}, {0x07, 0x02}},
54 {"E", {0x08, 0x02}, {0x08, 0x02}},
55 {"F", {0x09, 0x02}, {0x09, 0x02}},
56 {"G", {0x0a, 0x02}, {0x0a, 0x02}},
57 {"H", {0x0b, 0x02}, {0x0b, 0x02}},
58 {"I", {0x0c, 0x02}, {0x0c, 0x02}},
59 {"J", {0x0d, 0x02}, {0x0d, 0x02}},
60 {"K", {0x0e, 0x02}, {0x0e, 0x02}},
61 {"L", {0x0f, 0x02}, {0x0f, 0x02}},
62 {"M", {0x10, 0x02}, {0x10, 0x02}},
63 {"N", {0x11, 0x02}, {0x11, 0x02}},
64 {"O", {0x12, 0x02}, {0x12, 0x02}},
65 {"P", {0x13, 0x02}, {0x13, 0x02}},
66 {"Q", {0x14, 0x02}, {0x14, 0x02}},
67 {"R", {0x15, 0x02}, {0x15, 0x02}},
68 {"S", {0x16, 0x02}, {0x16, 0x02}},
69 {"T", {0x17, 0x02}, {0x17, 0x02}},
70 {"U", {0x18, 0x02}, {0x18, 0x02}},
71 {"V", {0x19, 0x02}, {0x19, 0x02}},
72 {"W", {0x1a, 0x02}, {0x1a, 0x02}},
73 {"X", {0x1b, 0x02}, {0x1b, 0x02}},
74 {"Y", {0x1c, 0x02}, {0x1d, 0x02}},
75 {"Z", {0x1d, 0x02}, {0x1c, 0x02}},
76 {"[", {0x2f, 0x00}, {0x25, 0x40}},
77 {"\\",{0x31, 0x00}, {0x2d, 0x40}},
78 {"]", {0x30, 0x00}, {0x26, 0x40}},
79 {"^", {0x23, 0x02}, {0x35, 0x00, 1}},
80 {"_", {0x2d, 0x02}, {0x38, 0x02}},
81 {"`", {0x35, 0x00}, {0x2e, 0x02, 1}},
82 {"a", {0x04, 0x00}, {0x04, 0x00}},
83 {"b", {0x05, 0x00}, {0x05, 0x00}},
84 {"c", {0x06, 0x00}, {0x06, 0x00}},
85 {"d", {0x07, 0x00}, {0x07, 0x00}},
86 {"e", {0x08, 0x00}, {0x08, 0x00}},
87 {"f", {0x09, 0x00}, {0x09, 0x00}},
88 {"g", {0x0a, 0x00}, {0x0a, 0x00}},
89 {"h", {0x0b, 0x00}, {0x0b, 0x00}},
90 {"i", {0x0c, 0x00}, {0x0c, 0x00}},
91 {"j", {0x0d, 0x00}, {0x0d, 0x00}},
92 {"k", {0x0e, 0x00}, {0x0e, 0x00}},
93 {"l", {0x0f, 0x00}, {0x0f, 0x00}},
94 {"m", {0x10, 0x00}, {0x10, 0x00}},
95 {"n", {0x11, 0x00}, {0x11, 0x00}},
96 {"o", {0x12, 0x00}, {0x12, 0x00}},
97 {"p", {0x13, 0x00}, {0x13, 0x00}},
98 {"q", {0x14, 0x00}, {0x14, 0x00}},
99 {"r", {0x15, 0x00}, {0x15, 0x00}},
100 {"s", {0x16, 0x00}, {0x16, 0x00}},
101 {"t", {0x17, 0x00}, {0x17, 0x00}},
102 {"u", {0x18, 0x00}, {0x18, 0x00}},
103 {"v", {0x19, 0x00}, {0x19, 0x00}},
104 {"w", {0x1a, 0x00}, {0x1a, 0x00}},
105 {"x", {0x1b, 0x00}, {0x1b, 0x00}},
106 {"y", {0x1c, 0x00}, {0x1d, 0x00}},
107 {"z", {0x1d, 0x00}, {0x1c, 0x00}},
108 {"{", {0x2f, 0x02}, {0x24, 0x40}},
109 {"|", {0x31, 0x02}, {0x64, 0x40}},
110 {"}", {0x30, 0x02}, {0x27, 0x40}},
111 {"~", {0x35, 0x02}, {0x30, 0x40}}
112 };
113
114 struct keysym* toscan (const char* utf8) {
115 if (utf8[1] == '\0') return &(keysyms[(int)utf8[0]]); //if char is not wide, it is on the corrent ascii position in the look up table
116 for (int i = 0; i < sizeof (keysyms)/sizeof (struct keysym); i++) {
117 if (strcmp (keysyms[i].sym, utf8) == 0) {
118 return &(keysyms[i]);
119 }
120 }
121 return NULL; // error
122 }
123
Imprint / Impressum