]> git.donarmstrong.com Git - qmk_firmware.git/blob - keyboards/comet46/lib/keylogger.c
Comet46 add support for OLED (#4745)
[qmk_firmware.git] / keyboards / comet46 / lib / keylogger.c
1 #include <stdio.h>
2
3 #ifdef __AVR__
4  #include <avr/io.h>
5  #include <avr/pgmspace.h>
6 #else
7  #define PROGMEM
8 #endif
9
10 #define NUM_USB_HID_KEYCODES 255
11 #define LEN_KEYCODE_STR 4
12
13 char keylog[22] = {"KC:       ID: "};
14
15 // Quick and dirty way to display USB HID keycodes used in QMK
16 // USB HID keycodes from 0x0000 to 0x00FF are stored in a 4x256+1 length char
17 const char code_to_name[] PROGMEM = {
18   "NO  " //0x00
19   "TRNS"
20   "?   "
21   "?   "
22   "A   "
23   "B   "
24   "C   "
25   "D   "
26   "E   "
27   "F   "
28   "G   "
29   "H   "
30   "I   "
31   "J   "
32   "K   "
33   "L   "
34   "M   " //0x10
35   "N   "
36   "O   "
37   "P   "
38   "Q   "
39   "R   "
40   "S   "
41   "T   "
42   "U   "
43   "V   "
44   "W   "
45   "X   "
46   "Y   "
47   "Z   "
48   "1   "
49   "2   "
50   "3   "  //0x20
51   "4   "
52   "5   "
53   "6   "
54   "7   "
55   "8   "
56   "9   "
57   "0   "
58   "ENT "
59   "ESC "
60   "BSPC"
61   "TAB "
62   "SPC "
63   "MINS"
64   "EQL "
65   "LBRC"
66   "RBRC" //0x30
67   "BSLS"
68   "NUHS"
69   "SCLN"
70   "QUOT"
71   "GRV "
72   "COMM"
73   "DOT "
74   "SLSH"
75   "CAPS"
76   "F1  "
77   "F2  "
78   "F3  "
79   "F4  "
80   "F5  "
81   "F6  "
82   "F7  " //0x40
83   "F8  "
84   "F9  "
85   "F10 "
86   "F11 "
87   "F12 "
88   "PSCR"
89   "SLCK"
90   "PAUS"
91   "INS "
92   "HOME"
93   "PGUP"
94   "DEL "
95   "END "
96   "PGDN"
97   "RGHT"
98   "LEFT" //0x50
99   "DOWN"
100   "UP  "
101   "NLCK"
102   "PSLS"
103   "PAST"
104   "PMNS"
105   "PPLS"
106   "PENT"
107   "P1  "
108   "P2  "
109   "P3  "
110   "P4  "
111   "P5  "
112   "P6  "
113   "P7  "
114   "P8  " //0x60
115   "P9  "
116   "P0  "
117   "PDOT"
118   "NUBS"
119   "APP "
120   "POW "
121   "PEQL"
122   "F13 "
123   "F14 "
124   "F15 "
125   "F16 "
126   "F17 "
127   "F18 "
128   "F19 "
129   "F20 "
130   "F21 " //0x70
131   "F22 "
132   "F23 "
133   "F24 "
134   "EXEC"
135   "HELP"
136   "MENU"
137   "SLCT"
138   "STOP"
139   "AGIN"
140   "UNDO"
141   "CUT "
142   "COPY"
143   "PSTE"
144   "FIND"
145   "_MUT"
146   "_VUP" //0x80
147   "_VDN"
148   "LCAP"
149   "LNUM"
150   "LSCR"
151   "PCMM"
152   "PEQA"
153   "INT1"
154   "INT2"
155   "INT3"
156   "INT4"
157   "INT5"
158   "INT6"
159   "INT7"
160   "INT8"
161   "INT9"
162   "LAN1" //0x90
163   "LAN2"
164   "LAN3"
165   "LAN4"
166   "LAN5"
167   "LAN6"
168   "LAN7"
169   "LAN8"
170   "LAN9"
171   "ERAS"
172   "SYSR"
173   "CNCL"
174   "CLR "
175   "PRIR"
176   "RTRN"
177   "SEP "
178   "OUT " //0xA0
179   "OPER"
180   "CLRA"
181   "CSEL"
182   "ESEL"
183   "PWR " //0xA5
184   "SLEP"
185   "WAKE"
186   "MUTE"
187   "VOLU"
188   "VOLD"
189   "MNXT"
190   "MPRV"
191   "MSTP"
192   "MPLY"
193   "MSEL"
194   "EJCT" //0xB0
195   "MAIL"
196   "CALC"
197   "MYCM"
198   "WSCH"
199   "WHOM"
200   "WBAK"
201   "WFWD"
202   "WSTP"
203   "WREF"
204   "WFAV"
205   "MFFD"
206   "MRWD"
207   "BRIU"
208   "BRID"
209   "?   "
210   "FN0 " //0xC0
211   "FN1 "
212   "FN2 "
213   "FN3 "
214   "FN4 "
215   "FN5 "
216   "FN6 "
217   "FN7 "
218   "FN8 "
219   "FN9 "
220   "FN10"
221   "FN11"
222   "FN12"
223   "FN13"
224   "FN14"
225   "FN15"
226   "FN16" //0xD0
227   "FN17"
228   "FN18"
229   "FN19"
230   "FN20"
231   "FN21"
232   "FN22"
233   "FN23"
234   "FN24"
235   "FN25"
236   "FN26"
237   "FN27"
238   "FN28"
239   "FN29"
240   "FN30"
241   "FN31"
242   "LCTL" //0xE0
243   "LSFT"
244   "LALT"
245   "LGUI"
246   "RCTL"
247   "RSFT"
248   "RALT"
249   "RGUI"
250   "?   "
251   "?   "
252   "?   "
253   "?   "
254   "?   "
255   "?   "
256   "?   "
257   "?   "
258   "MS_U" //0xF0
259   "MS_D"
260   "MS_L"
261   "MS_R"
262   "BTN1"
263   "BTN2"
264   "BTN3"
265   "BTN4"
266   "BTN5"
267   "WH_U"
268   "WH_D"
269   "WH_L"
270   "WH_R"
271   "ACL0"
272   "ACL1"
273   "ACL2"
274 };
275
276 void set_keylog(uint16_t keycode)
277 {
278   char name[LEN_KEYCODE_STR+1] = "?   ";
279
280   if (keycode <= NUM_USB_HID_KEYCODES) {
281     for (uint8_t k = 0; k < LEN_KEYCODE_STR; k++) {
282       name[k] =  pgm_read_byte_near(code_to_name + keycode * LEN_KEYCODE_STR + k);
283     }
284   } else if (keycode > NUM_USB_HID_KEYCODES) {
285     snprintf(name, sizeof(name), "QMK ");
286   }
287
288   // update keylog
289   snprintf(keylog, sizeof(keylog), "KC: %s  ID: %d", name, keycode);
290 }
291
292 const char *read_keylog(void) {
293   return keylog;
294 }