logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git

keylogger.c (3243B)


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