You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					295 lines
				
				3.2 KiB
			
		
		
			
		
	
	
					295 lines
				
				3.2 KiB
			| 
								 
											7 years ago
										 
									 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __AVR__
							 | 
						||
| 
								 | 
							
								 #include <avr/io.h>
							 | 
						||
| 
								 | 
							
								 #include <avr/pgmspace.h>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								 #define PROGMEM
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define NUM_USB_HID_KEYCODES 255
							 | 
						||
| 
								 | 
							
								#define LEN_KEYCODE_STR 4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								char keylog[22] = {"KC:       ID: "};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Quick and dirty way to display USB HID keycodes used in QMK
							 | 
						||
| 
								 | 
							
								// USB HID keycodes from 0x0000 to 0x00FF are stored in a 4x256+1 length char
							 | 
						||
| 
								 | 
							
								const char code_to_name[] PROGMEM = {
							 | 
						||
| 
								 | 
							
								  "NO  " //0x00
							 | 
						||
| 
								 | 
							
								  "TRNS"
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "A   "
							 | 
						||
| 
								 | 
							
								  "B   "
							 | 
						||
| 
								 | 
							
								  "C   "
							 | 
						||
| 
								 | 
							
								  "D   "
							 | 
						||
| 
								 | 
							
								  "E   "
							 | 
						||
| 
								 | 
							
								  "F   "
							 | 
						||
| 
								 | 
							
								  "G   "
							 | 
						||
| 
								 | 
							
								  "H   "
							 | 
						||
| 
								 | 
							
								  "I   "
							 | 
						||
| 
								 | 
							
								  "J   "
							 | 
						||
| 
								 | 
							
								  "K   "
							 | 
						||
| 
								 | 
							
								  "L   "
							 | 
						||
| 
								 | 
							
								  "M   " //0x10
							 | 
						||
| 
								 | 
							
								  "N   "
							 | 
						||
| 
								 | 
							
								  "O   "
							 | 
						||
| 
								 | 
							
								  "P   "
							 | 
						||
| 
								 | 
							
								  "Q   "
							 | 
						||
| 
								 | 
							
								  "R   "
							 | 
						||
| 
								 | 
							
								  "S   "
							 | 
						||
| 
								 | 
							
								  "T   "
							 | 
						||
| 
								 | 
							
								  "U   "
							 | 
						||
| 
								 | 
							
								  "V   "
							 | 
						||
| 
								 | 
							
								  "W   "
							 | 
						||
| 
								 | 
							
								  "X   "
							 | 
						||
| 
								 | 
							
								  "Y   "
							 | 
						||
| 
								 | 
							
								  "Z   "
							 | 
						||
| 
								 | 
							
								  "1   "
							 | 
						||
| 
								 | 
							
								  "2   "
							 | 
						||
| 
								 | 
							
								  "3   "  //0x20
							 | 
						||
| 
								 | 
							
								  "4   "
							 | 
						||
| 
								 | 
							
								  "5   "
							 | 
						||
| 
								 | 
							
								  "6   "
							 | 
						||
| 
								 | 
							
								  "7   "
							 | 
						||
| 
								 | 
							
								  "8   "
							 | 
						||
| 
								 | 
							
								  "9   "
							 | 
						||
| 
								 | 
							
								  "0   "
							 | 
						||
| 
								 | 
							
								  "ENT "
							 | 
						||
| 
								 | 
							
								  "ESC "
							 | 
						||
| 
								 | 
							
								  "BSPC"
							 | 
						||
| 
								 | 
							
								  "TAB "
							 | 
						||
| 
								 | 
							
								  "SPC "
							 | 
						||
| 
								 | 
							
								  "MINS"
							 | 
						||
| 
								 | 
							
								  "EQL "
							 | 
						||
| 
								 | 
							
								  "LBRC"
							 | 
						||
| 
								 | 
							
								  "RBRC" //0x30
							 | 
						||
| 
								 | 
							
								  "BSLS"
							 | 
						||
| 
								 | 
							
								  "NUHS"
							 | 
						||
| 
								 | 
							
								  "SCLN"
							 | 
						||
| 
								 | 
							
								  "QUOT"
							 | 
						||
| 
								 | 
							
								  "GRV "
							 | 
						||
| 
								 | 
							
								  "COMM"
							 | 
						||
| 
								 | 
							
								  "DOT "
							 | 
						||
| 
								 | 
							
								  "SLSH"
							 | 
						||
| 
								 | 
							
								  "CAPS"
							 | 
						||
| 
								 | 
							
								  "F1  "
							 | 
						||
| 
								 | 
							
								  "F2  "
							 | 
						||
| 
								 | 
							
								  "F3  "
							 | 
						||
| 
								 | 
							
								  "F4  "
							 | 
						||
| 
								 | 
							
								  "F5  "
							 | 
						||
| 
								 | 
							
								  "F6  "
							 | 
						||
| 
								 | 
							
								  "F7  " //0x40
							 | 
						||
| 
								 | 
							
								  "F8  "
							 | 
						||
| 
								 | 
							
								  "F9  "
							 | 
						||
| 
								 | 
							
								  "F10 "
							 | 
						||
| 
								 | 
							
								  "F11 "
							 | 
						||
| 
								 | 
							
								  "F12 "
							 | 
						||
| 
								 | 
							
								  "PSCR"
							 | 
						||
| 
								 | 
							
								  "SLCK"
							 | 
						||
| 
								 | 
							
								  "PAUS"
							 | 
						||
| 
								 | 
							
								  "INS "
							 | 
						||
| 
								 | 
							
								  "HOME"
							 | 
						||
| 
								 | 
							
								  "PGUP"
							 | 
						||
| 
								 | 
							
								  "DEL "
							 | 
						||
| 
								 | 
							
								  "END "
							 | 
						||
| 
								 | 
							
								  "PGDN"
							 | 
						||
| 
								 | 
							
								  "RGHT"
							 | 
						||
| 
								 | 
							
								  "LEFT" //0x50
							 | 
						||
| 
								 | 
							
								  "DOWN"
							 | 
						||
| 
								 | 
							
								  "UP  "
							 | 
						||
| 
								 | 
							
								  "NLCK"
							 | 
						||
| 
								 | 
							
								  "PSLS"
							 | 
						||
| 
								 | 
							
								  "PAST"
							 | 
						||
| 
								 | 
							
								  "PMNS"
							 | 
						||
| 
								 | 
							
								  "PPLS"
							 | 
						||
| 
								 | 
							
								  "PENT"
							 | 
						||
| 
								 | 
							
								  "P1  "
							 | 
						||
| 
								 | 
							
								  "P2  "
							 | 
						||
| 
								 | 
							
								  "P3  "
							 | 
						||
| 
								 | 
							
								  "P4  "
							 | 
						||
| 
								 | 
							
								  "P5  "
							 | 
						||
| 
								 | 
							
								  "P6  "
							 | 
						||
| 
								 | 
							
								  "P7  "
							 | 
						||
| 
								 | 
							
								  "P8  " //0x60
							 | 
						||
| 
								 | 
							
								  "P9  "
							 | 
						||
| 
								 | 
							
								  "P0  "
							 | 
						||
| 
								 | 
							
								  "PDOT"
							 | 
						||
| 
								 | 
							
								  "NUBS"
							 | 
						||
| 
								 | 
							
								  "APP "
							 | 
						||
| 
								 | 
							
								  "POW "
							 | 
						||
| 
								 | 
							
								  "PEQL"
							 | 
						||
| 
								 | 
							
								  "F13 "
							 | 
						||
| 
								 | 
							
								  "F14 "
							 | 
						||
| 
								 | 
							
								  "F15 "
							 | 
						||
| 
								 | 
							
								  "F16 "
							 | 
						||
| 
								 | 
							
								  "F17 "
							 | 
						||
| 
								 | 
							
								  "F18 "
							 | 
						||
| 
								 | 
							
								  "F19 "
							 | 
						||
| 
								 | 
							
								  "F20 "
							 | 
						||
| 
								 | 
							
								  "F21 " //0x70
							 | 
						||
| 
								 | 
							
								  "F22 "
							 | 
						||
| 
								 | 
							
								  "F23 "
							 | 
						||
| 
								 | 
							
								  "F24 "
							 | 
						||
| 
								 | 
							
								  "EXEC"
							 | 
						||
| 
								 | 
							
								  "HELP"
							 | 
						||
| 
								 | 
							
								  "MENU"
							 | 
						||
| 
								 | 
							
								  "SLCT"
							 | 
						||
| 
								 | 
							
								  "STOP"
							 | 
						||
| 
								 | 
							
								  "AGIN"
							 | 
						||
| 
								 | 
							
								  "UNDO"
							 | 
						||
| 
								 | 
							
								  "CUT "
							 | 
						||
| 
								 | 
							
								  "COPY"
							 | 
						||
| 
								 | 
							
								  "PSTE"
							 | 
						||
| 
								 | 
							
								  "FIND"
							 | 
						||
| 
								 | 
							
								  "_MUT"
							 | 
						||
| 
								 | 
							
								  "_VUP" //0x80
							 | 
						||
| 
								 | 
							
								  "_VDN"
							 | 
						||
| 
								 | 
							
								  "LCAP"
							 | 
						||
| 
								 | 
							
								  "LNUM"
							 | 
						||
| 
								 | 
							
								  "LSCR"
							 | 
						||
| 
								 | 
							
								  "PCMM"
							 | 
						||
| 
								 | 
							
								  "PEQA"
							 | 
						||
| 
								 | 
							
								  "INT1"
							 | 
						||
| 
								 | 
							
								  "INT2"
							 | 
						||
| 
								 | 
							
								  "INT3"
							 | 
						||
| 
								 | 
							
								  "INT4"
							 | 
						||
| 
								 | 
							
								  "INT5"
							 | 
						||
| 
								 | 
							
								  "INT6"
							 | 
						||
| 
								 | 
							
								  "INT7"
							 | 
						||
| 
								 | 
							
								  "INT8"
							 | 
						||
| 
								 | 
							
								  "INT9"
							 | 
						||
| 
								 | 
							
								  "LAN1" //0x90
							 | 
						||
| 
								 | 
							
								  "LAN2"
							 | 
						||
| 
								 | 
							
								  "LAN3"
							 | 
						||
| 
								 | 
							
								  "LAN4"
							 | 
						||
| 
								 | 
							
								  "LAN5"
							 | 
						||
| 
								 | 
							
								  "LAN6"
							 | 
						||
| 
								 | 
							
								  "LAN7"
							 | 
						||
| 
								 | 
							
								  "LAN8"
							 | 
						||
| 
								 | 
							
								  "LAN9"
							 | 
						||
| 
								 | 
							
								  "ERAS"
							 | 
						||
| 
								 | 
							
								  "SYSR"
							 | 
						||
| 
								 | 
							
								  "CNCL"
							 | 
						||
| 
								 | 
							
								  "CLR "
							 | 
						||
| 
								 | 
							
								  "PRIR"
							 | 
						||
| 
								 | 
							
								  "RTRN"
							 | 
						||
| 
								 | 
							
								  "SEP "
							 | 
						||
| 
								 | 
							
								  "OUT " //0xA0
							 | 
						||
| 
								 | 
							
								  "OPER"
							 | 
						||
| 
								 | 
							
								  "CLRA"
							 | 
						||
| 
								 | 
							
								  "CSEL"
							 | 
						||
| 
								 | 
							
								  "ESEL"
							 | 
						||
| 
								 | 
							
								  "PWR " //0xA5
							 | 
						||
| 
								 | 
							
								  "SLEP"
							 | 
						||
| 
								 | 
							
								  "WAKE"
							 | 
						||
| 
								 | 
							
								  "MUTE"
							 | 
						||
| 
								 | 
							
								  "VOLU"
							 | 
						||
| 
								 | 
							
								  "VOLD"
							 | 
						||
| 
								 | 
							
								  "MNXT"
							 | 
						||
| 
								 | 
							
								  "MPRV"
							 | 
						||
| 
								 | 
							
								  "MSTP"
							 | 
						||
| 
								 | 
							
								  "MPLY"
							 | 
						||
| 
								 | 
							
								  "MSEL"
							 | 
						||
| 
								 | 
							
								  "EJCT" //0xB0
							 | 
						||
| 
								 | 
							
								  "MAIL"
							 | 
						||
| 
								 | 
							
								  "CALC"
							 | 
						||
| 
								 | 
							
								  "MYCM"
							 | 
						||
| 
								 | 
							
								  "WSCH"
							 | 
						||
| 
								 | 
							
								  "WHOM"
							 | 
						||
| 
								 | 
							
								  "WBAK"
							 | 
						||
| 
								 | 
							
								  "WFWD"
							 | 
						||
| 
								 | 
							
								  "WSTP"
							 | 
						||
| 
								 | 
							
								  "WREF"
							 | 
						||
| 
								 | 
							
								  "WFAV"
							 | 
						||
| 
								 | 
							
								  "MFFD"
							 | 
						||
| 
								 | 
							
								  "MRWD"
							 | 
						||
| 
								 | 
							
								  "BRIU"
							 | 
						||
| 
								 | 
							
								  "BRID"
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "FN0 " //0xC0
							 | 
						||
| 
								 | 
							
								  "FN1 "
							 | 
						||
| 
								 | 
							
								  "FN2 "
							 | 
						||
| 
								 | 
							
								  "FN3 "
							 | 
						||
| 
								 | 
							
								  "FN4 "
							 | 
						||
| 
								 | 
							
								  "FN5 "
							 | 
						||
| 
								 | 
							
								  "FN6 "
							 | 
						||
| 
								 | 
							
								  "FN7 "
							 | 
						||
| 
								 | 
							
								  "FN8 "
							 | 
						||
| 
								 | 
							
								  "FN9 "
							 | 
						||
| 
								 | 
							
								  "FN10"
							 | 
						||
| 
								 | 
							
								  "FN11"
							 | 
						||
| 
								 | 
							
								  "FN12"
							 | 
						||
| 
								 | 
							
								  "FN13"
							 | 
						||
| 
								 | 
							
								  "FN14"
							 | 
						||
| 
								 | 
							
								  "FN15"
							 | 
						||
| 
								 | 
							
								  "FN16" //0xD0
							 | 
						||
| 
								 | 
							
								  "FN17"
							 | 
						||
| 
								 | 
							
								  "FN18"
							 | 
						||
| 
								 | 
							
								  "FN19"
							 | 
						||
| 
								 | 
							
								  "FN20"
							 | 
						||
| 
								 | 
							
								  "FN21"
							 | 
						||
| 
								 | 
							
								  "FN22"
							 | 
						||
| 
								 | 
							
								  "FN23"
							 | 
						||
| 
								 | 
							
								  "FN24"
							 | 
						||
| 
								 | 
							
								  "FN25"
							 | 
						||
| 
								 | 
							
								  "FN26"
							 | 
						||
| 
								 | 
							
								  "FN27"
							 | 
						||
| 
								 | 
							
								  "FN28"
							 | 
						||
| 
								 | 
							
								  "FN29"
							 | 
						||
| 
								 | 
							
								  "FN30"
							 | 
						||
| 
								 | 
							
								  "FN31"
							 | 
						||
| 
								 | 
							
								  "LCTL" //0xE0
							 | 
						||
| 
								 | 
							
								  "LSFT"
							 | 
						||
| 
								 | 
							
								  "LALT"
							 | 
						||
| 
								 | 
							
								  "LGUI"
							 | 
						||
| 
								 | 
							
								  "RCTL"
							 | 
						||
| 
								 | 
							
								  "RSFT"
							 | 
						||
| 
								 | 
							
								  "RALT"
							 | 
						||
| 
								 | 
							
								  "RGUI"
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "?   "
							 | 
						||
| 
								 | 
							
								  "MS_U" //0xF0
							 | 
						||
| 
								 | 
							
								  "MS_D"
							 | 
						||
| 
								 | 
							
								  "MS_L"
							 | 
						||
| 
								 | 
							
								  "MS_R"
							 | 
						||
| 
								 | 
							
								  "BTN1"
							 | 
						||
| 
								 | 
							
								  "BTN2"
							 | 
						||
| 
								 | 
							
								  "BTN3"
							 | 
						||
| 
								 | 
							
								  "BTN4"
							 | 
						||
| 
								 | 
							
								  "BTN5"
							 | 
						||
| 
								 | 
							
								  "WH_U"
							 | 
						||
| 
								 | 
							
								  "WH_D"
							 | 
						||
| 
								 | 
							
								  "WH_L"
							 | 
						||
| 
								 | 
							
								  "WH_R"
							 | 
						||
| 
								 | 
							
								  "ACL0"
							 | 
						||
| 
								 | 
							
								  "ACL1"
							 | 
						||
| 
								 | 
							
								  "ACL2"
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void set_keylog(uint16_t keycode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  char name[LEN_KEYCODE_STR+1] = "?   ";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (keycode <= NUM_USB_HID_KEYCODES) {
							 | 
						||
| 
								 | 
							
								    for (uint8_t k = 0; k < LEN_KEYCODE_STR; k++) {
							 | 
						||
| 
								 | 
							
								      name[k] =  pgm_read_byte_near(code_to_name + keycode * LEN_KEYCODE_STR + k);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } else if (keycode > NUM_USB_HID_KEYCODES) {
							 | 
						||
| 
								 | 
							
								    snprintf(name, sizeof(name), "QMK ");
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // update keylog
							 | 
						||
| 
								 | 
							
								  snprintf(keylog, sizeof(keylog), "KC: %s  ID: %d", name, keycode);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const char *read_keylog(void) {
							 | 
						||
| 
								 | 
							
								  return keylog;
							 | 
						||
| 
								 | 
							
								}
							 |