annotate Output/pjrcUSB/arm/usb_keyboard.c @ 368:06a54d582bf8

FIxing Media Keys and general USB compatibilty - Media keys tested working on Linux/Windows/Mac (use Consumer control) - Fixed enumeration delays - Fixed virtual serial port configuration issues - Fixed GET_REPORT and SET_REPORT - Added intial descriptors and endpoints for Mouse and Joystick devices - Split out the consumer and system control endpoint - Added more fault debugging messages - Added interface names to endpoints (visible in Windows Device Manager) - Added KLL define for keyboard locale
author Jacob Alexander <haata@kiibohd.com>
date Wed, 19 Aug 2015 00:01:15 -0700
parents 1beec5f17e64
children 68e19d7c953e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
1 /* Teensyduino Core Library
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
2 * http://www.pjrc.com/teensy/
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
3 * Copyright (c) 2013 PJRC.COM, LLC.
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
4 * Modifications by Jacob Alexander 2013-2015
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
5 *
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
6 * Permission is hereby granted, free of charge, to any person obtaining
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
7 * a copy of this software and associated documentation files (the
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
8 * "Software"), to deal in the Software without restriction, including
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
9 * without limitation the rights to use, copy, modify, merge, publish,
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
10 * distribute, sublicense, and/or sell copies of the Software, and to
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
11 * permit persons to whom the Software is furnished to do so, subject to
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
12 * the following conditions:
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
13 *
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
14 * 1. The above copyright notice and this permission notice shall be
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
15 * included in all copies or substantial portions of the Software.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
16 *
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
17 * 2. If the Software is incorporated into a build system that allows
117
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
18 * selection among a list of target devices, then similar target
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
19 * devices manufactured by PJRC.COM must be included in the list of
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
20 * target devices and selectable in the same manner.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
21 *
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
22 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
23 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
24 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
25 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
26 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
27 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
28 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
29 * SOFTWARE.
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
30 */
5ffefdf89b37 Adding in USB module updates from Teensyduino 1.18rc2.
Jacob Alexander <haata@kiibohd.com>
parents: 104
diff changeset
31
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
32 // ----- Includes -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
33
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
34 // Compiler Includes
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
35 #include <string.h> // for memcpy()
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
36
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
37 // Project Includes
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
38 #include <Lib/OutputLib.h>
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
39 #include <print.h>
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
40
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
41 // Local Includes
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
42 #include "usb_dev.h"
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
43 #include "usb_keyboard.h"
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
44
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
45
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
46
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
47 // ----- Defines -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
48
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
49 // Maximum number of transmit packets to queue so we don't starve other endpoints for memory
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
50 #define TX_PACKET_LIMIT 4
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
51
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
52 // When the PC isn't listening, how long do we wait before discarding data?
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
53 #define TX_TIMEOUT_MSEC 50
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
54
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
55 #if F_CPU == 168000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
56 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 1100)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
57 #elif F_CPU == 144000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
58 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 932)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
59 #elif F_CPU == 120000000
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
60 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 764)
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
61 #elif F_CPU == 96000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
62 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 596)
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
63 #elif F_CPU == 72000000
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
64 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 512)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
65 #elif F_CPU == 48000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
66 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 428)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
67 #elif F_CPU == 24000000
334
9ac304aa1ab5 Adding initial dfu-upload code and debugging for Bootloader.
Jacob Alexander <haata@kiibohd.com>
parents: 326
diff changeset
68 #define TX_TIMEOUT (TX_TIMEOUT_MSEC * 262)
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
69 #endif
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
70
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
71
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
72
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
73 // ----- Variables -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
74
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
75 static uint8_t transmit_previous_timeout = 0;
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
76
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
77
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
78
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
79 // ----- Functions -----
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
80
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
81 // send the contents of keyboard_keys and keyboard_modifier_keys
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
82 void usb_keyboard_send()
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
83 {
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
84 uint32_t wait_count = 0;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
85 usb_packet_t *tx_packet;
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
86
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
87 // Wait till ready
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
88 while ( 1 )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
89 {
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
90 if ( !usb_configuration )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
91 {
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
92 erro_print("USB not configured...");
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
93 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
94 }
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
95
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
96 if ( USBKeys_Protocol == 0 ) // Boot Mode
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
97 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
98 if ( usb_tx_packet_count( KEYBOARD_ENDPOINT ) < TX_PACKET_LIMIT )
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
99 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
100 tx_packet = usb_malloc();
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
101 if ( tx_packet )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
102 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
103 }
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
104 }
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
105 else if ( USBKeys_Protocol == 1 ) // NKRO Mode
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
106 {
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
107 if ( usb_tx_packet_count( NKRO_KEYBOARD_ENDPOINT ) < TX_PACKET_LIMIT )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
108 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
109 tx_packet = usb_malloc();
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
110 if ( tx_packet )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
111 break;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
112 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
113 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
114 else if ( USBKeys_Changed &
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
115 ( USBKeyChangeState_System | USBKeyChangeState_Consumer )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
116 )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
117 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
118 if ( usb_tx_packet_count( SYS_CTRL_ENDPOINT ) < TX_PACKET_LIMIT )
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
119 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
120 tx_packet = usb_malloc();
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
121 if ( tx_packet )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
122 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
123 }
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
124 }
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
125
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
126 if ( ++wait_count > TX_TIMEOUT || transmit_previous_timeout )
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
127 {
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
128 transmit_previous_timeout = 1;
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
129 warn_print("USB Transmit Timeout...");
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
130 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
131 }
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
132 yield();
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
133 }
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
134
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
135 // Pointer to USB tx packet buffer
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
136 uint8_t *tx_buf = tx_packet->buf;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
137
368
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
138 // Check system control keys
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
139 if ( USBKeys_Changed & USBKeyChangeState_System )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
140 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
141 if ( Output_DebugMode )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
142 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
143 print("SysCtrl[");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
144 printHex_op( USBKeys_SysCtrl, 2 );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
145 print( "] " NL );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
146 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
147
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
148 *tx_buf++ = 0x02; // ID
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
149 *tx_buf = USBKeys_SysCtrl;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
150 tx_packet->len = 2;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
151
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
152 // Send USB Packet
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
153 usb_tx( SYS_CTRL_ENDPOINT, tx_packet );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
154 USBKeys_Changed &= ~USBKeyChangeState_System; // Mark sent
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
155 return;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
156 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
157
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
158 // Check consumer control keys
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
159 if ( USBKeys_Changed & USBKeyChangeState_Consumer )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
160 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
161 if ( Output_DebugMode )
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
162 {
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
163 print("ConsCtrl[");
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
164 printHex_op( USBKeys_ConsCtrl, 2 );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
165 print( "] " NL );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
166 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
167
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
168 *tx_buf++ = 0x03; // ID
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
169 *tx_buf++ = (uint8_t)(USBKeys_ConsCtrl & 0x00FF);
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
170 *tx_buf = (uint8_t)(USBKeys_ConsCtrl >> 8);
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
171 tx_packet->len = 3;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
172
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
173 // Send USB Packet
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
174 usb_tx( SYS_CTRL_ENDPOINT, tx_packet );
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
175 USBKeys_Changed &= ~USBKeyChangeState_Consumer; // Mark sent
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
176 return;
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
177 }
06a54d582bf8 FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents: 346
diff changeset
178
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
179 switch ( USBKeys_Protocol )
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
180 {
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
181 // Send boot keyboard interrupt packet(s)
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
182 case 0:
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
183 // USB Boot Mode debug output
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
184 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
185 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
186 dbug_msg("Boot USB: ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
187 printHex_op( USBKeys_Modifiers, 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
188 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
189 printHex( 0 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
190 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
191 printHex_op( USBKeys_Keys[0], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
192 printHex_op( USBKeys_Keys[1], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
193 printHex_op( USBKeys_Keys[2], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
194 printHex_op( USBKeys_Keys[3], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
195 printHex_op( USBKeys_Keys[4], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
196 printHex_op( USBKeys_Keys[5], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
197 print( NL );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
198 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
199
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
200 // Boot Mode
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
201 *tx_buf++ = USBKeys_Modifiers;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
202 *tx_buf++ = 0;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
203 memcpy( tx_buf, USBKeys_Keys, USB_BOOT_MAX_KEYS );
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
204 tx_packet->len = 8;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
205
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
206 // Send USB Packet
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
207 usb_tx( KEYBOARD_ENDPOINT, tx_packet );
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
208 USBKeys_Changed = USBKeyChangeState_None;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
209 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
210
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
211 // Send NKRO keyboard interrupts packet(s)
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
212 case 1:
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
213 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
214 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
215 dbug_msg("NKRO USB: ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
216 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
217
251
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
218 // Standard HID Keyboard
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
219 if ( USBKeys_Changed )
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
220 {
285
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
221 // USB NKRO Debug output
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
222 if ( Output_DebugMode )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
223 {
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
224 printHex_op( USBKeys_Modifiers, 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
225 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
226 for ( uint8_t c = 0; c < 6; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
227 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
228 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
229 for ( uint8_t c = 6; c < 20; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
230 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
231 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
232 printHex_op( USBKeys_Keys[20], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
233 print(" ");
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
234 for ( uint8_t c = 21; c < 27; c++ )
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
235 printHex_op( USBKeys_Keys[ c ], 2 );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
236 print( NL );
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
237 }
1495b4504a59 Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents: 251
diff changeset
238
251
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
239 tx_packet->len = 0;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
240
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
241 // Modifiers
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
242 *tx_buf++ = 0x01; // ID
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
243 *tx_buf++ = USBKeys_Modifiers;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
244 tx_packet->len += 2;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
245
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
246 // 4-49 (first 6 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
247 memcpy( tx_buf, USBKeys_Keys, 6 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
248 tx_buf += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
249 tx_packet->len += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
250
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
251 // 51-155 (Middle 14 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
252 memcpy( tx_buf, USBKeys_Keys + 6, 14 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
253 tx_buf += 14;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
254 tx_packet->len += 14;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
255
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
256 // 157-164 (Next byte)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
257 memcpy( tx_buf, USBKeys_Keys + 20, 1 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
258 tx_buf += 1;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
259 tx_packet->len += 1;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
260
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
261 // 176-221 (last 6 bytes)
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
262 memcpy( tx_buf, USBKeys_Keys + 21, 6 );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
263 tx_packet->len += 6;
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
264
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
265 // Send USB Packet
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
266 usb_tx( NKRO_KEYBOARD_ENDPOINT, tx_packet );
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
267 USBKeys_Changed = USBKeyChangeState_None; // Mark sent
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
268 }
d3ac199593d6 Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents: 248
diff changeset
269
232
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
270 break;
9a3c9f6f4866 USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents: 224
diff changeset
271 }
224
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
272
138e5ca7f8e4 Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents: 118
diff changeset
273 return;
104
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
274 }
e84738d174bc Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff changeset
275