Matrix (i,j) entry shows USB usage code ------ Row is J1 connector; column is j2 ------ 1 2 3 4 5 6 7 8 9 10 11 ----------------------------------- 1 68 2 69 3 6A 6B 4 6C 6D 5 6E 6F 6 70 71 7 72 73 8 87 88 9 89 8A 10 8B 8C 8D 8E 11 8F 90 91 92 12 93 94 95 96 13 97 98 80 81 14 15 16 Keybinding Usage code --> foot key virtual keycode ---------- static struct { unsigned char usage_code; unsigned short foot_key;} foot_key_table[32] = { // independent group number one: shift keys 0x68, FOOT_VK_SHIFT_L, 0x69, FOOT_VK_SHIFT_R, // independent group number two: control keys // assumption: FOOT_VK_CTRL_L and FOOT_VK_ALPHA_CTRL_L are not depressed // simultaneously, the same thing holds for the right keys 0x6a, FOOT_VK_CTRL_L, 0x6b, FOOT_VK_ALPHA_CTRL_L, 0x6c, FOOT_VK_CTRL_R, 0x6d, FOOT_VK_ALPHA_CTRL_R, // independent group number three: alt keys // assumption: FOOT_VK_ALT_L and FOOT_VK_ALPHA_ALT_L are not operated // simultaneously; the same thing holds for the right keys 0x6e, FOOT_VK_ALT_L, 0x6f, FOOT_VK_ALPHA_ALT_L, 0x70, FOOT_VK_ALT_R, 0x71, FOOT_VK_ALPHA_CTRL_R, // independent group number four: function keys // assumption: at most one of FOOT_VK_F_CTRL_L, FOOT_VK_F_L, and // FOOT_VK_F_ALT_L is activated at the same time; similar // assumption for the right keys 0x72, FOOT_VK_F_CTRL_L, 0x73, FOOT_VK_F_CTRL_R, 0x87, FOOT_VK_F_L, 0x88, FOOT_VK_F_R, 0x89, FOOT_VK_F_ALT_L, 0x8a, FOOT_VK_F_ALT_R, // independent group number 5: normal keys 0x8b, VK_ESCAPE, 0x8c, VK_TAB, 0x8d, VK_UP, 0x8e, VK_PRIOR, 0x8f, VK_BACK, 0x90, VK_DOWN, 0x91, FOOT_VK_MOUSE_LEFT, // 0x92 can be generated, but is not used 0x93, VK_SPACE, 0x94, VK_DELETE, 0x95, VK_RETURN, 0x96, VK_NEXT, 0x97, VK_LEFT, 0x98, FOOT_VK_MOUSE_RIGHT, 0x80, VK_RIGHT, // 0x81 may be generated, but is not used };