Mercurial > louis > kiibohd-controller
annotate Output/pjrcUSB/arm/usb_keyboard.c @ 439:68e19d7c953e
Adding proper remote wake-up support
- Maintains a sleep state variable (may be able to use as a signal in the future)
- On the first keypress, hold the RESUME signal for 10 ms (spec says between 1 and 15 ms)
- Removed some messages that were affecting sleep state
author | Jacob Alexander <haata@kiibohd.com> |
---|---|
date | Tue, 17 May 2016 01:18:14 -0700 |
parents | 06a54d582bf8 |
children | 56237ba5da6f |
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..."); |
439
68e19d7c953e
Adding proper remote wake-up support
Jacob Alexander <haata@kiibohd.com>
parents:
368
diff
changeset
|
130 USBKeys_Changed = USBKeyChangeState_None; // Indicate packet lost |
224
138e5ca7f8e4
Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
118
diff
changeset
|
131 return; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
132 } |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
133 yield(); |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
134 } |
224
138e5ca7f8e4
Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
118
diff
changeset
|
135 |
232
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
136 // Pointer to USB tx packet buffer |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
137 uint8_t *tx_buf = tx_packet->buf; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
138 |
368
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
139 // Check system control keys |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
140 if ( USBKeys_Changed & USBKeyChangeState_System ) |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
141 { |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
142 if ( Output_DebugMode ) |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
143 { |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
144 print("SysCtrl["); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
145 printHex_op( USBKeys_SysCtrl, 2 ); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
146 print( "] " NL ); |
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 |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
149 *tx_buf++ = 0x02; // ID |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
150 *tx_buf = USBKeys_SysCtrl; |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
151 tx_packet->len = 2; |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
152 |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
153 // Send USB Packet |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
154 usb_tx( SYS_CTRL_ENDPOINT, tx_packet ); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
155 USBKeys_Changed &= ~USBKeyChangeState_System; // Mark sent |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
156 return; |
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 |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
159 // Check consumer control keys |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
160 if ( USBKeys_Changed & USBKeyChangeState_Consumer ) |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
161 { |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
162 if ( Output_DebugMode ) |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
163 { |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
164 print("ConsCtrl["); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
165 printHex_op( USBKeys_ConsCtrl, 2 ); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
166 print( "] " NL ); |
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 |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
169 *tx_buf++ = 0x03; // ID |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
170 *tx_buf++ = (uint8_t)(USBKeys_ConsCtrl & 0x00FF); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
171 *tx_buf = (uint8_t)(USBKeys_ConsCtrl >> 8); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
172 tx_packet->len = 3; |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
173 |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
174 // Send USB Packet |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
175 usb_tx( SYS_CTRL_ENDPOINT, tx_packet ); |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
176 USBKeys_Changed &= ~USBKeyChangeState_Consumer; // Mark sent |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
177 return; |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
178 } |
06a54d582bf8
FIxing Media Keys and general USB compatibilty
Jacob Alexander <haata@kiibohd.com>
parents:
346
diff
changeset
|
179 |
232
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
180 switch ( USBKeys_Protocol ) |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
181 { |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
182 // Send boot keyboard interrupt packet(s) |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
183 case 0: |
285
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
184 // USB Boot Mode debug output |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
185 if ( Output_DebugMode ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
186 { |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
187 dbug_msg("Boot USB: "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
188 printHex_op( USBKeys_Modifiers, 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
189 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
190 printHex( 0 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
191 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
192 printHex_op( USBKeys_Keys[0], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
193 printHex_op( USBKeys_Keys[1], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
194 printHex_op( USBKeys_Keys[2], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
195 printHex_op( USBKeys_Keys[3], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
196 printHex_op( USBKeys_Keys[4], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
197 printHex_op( USBKeys_Keys[5], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
198 print( NL ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
199 } |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
200 |
232
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
201 // Boot Mode |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
202 *tx_buf++ = USBKeys_Modifiers; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
203 *tx_buf++ = 0; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
204 memcpy( tx_buf, USBKeys_Keys, USB_BOOT_MAX_KEYS ); |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
205 tx_packet->len = 8; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
206 |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
207 // Send USB Packet |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
208 usb_tx( KEYBOARD_ENDPOINT, tx_packet ); |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
209 USBKeys_Changed = USBKeyChangeState_None; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
210 break; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
211 |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
212 // Send NKRO keyboard interrupts packet(s) |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
213 case 1: |
285
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
214 if ( Output_DebugMode ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
215 { |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
216 dbug_msg("NKRO USB: "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
217 } |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
218 |
251
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
219 // Standard HID Keyboard |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
220 if ( USBKeys_Changed ) |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
221 { |
285
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
222 // USB NKRO Debug output |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
223 if ( Output_DebugMode ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
224 { |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
225 printHex_op( USBKeys_Modifiers, 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
226 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
227 for ( uint8_t c = 0; c < 6; c++ ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
228 printHex_op( USBKeys_Keys[ c ], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
229 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
230 for ( uint8_t c = 6; c < 20; c++ ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
231 printHex_op( USBKeys_Keys[ c ], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
232 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
233 printHex_op( USBKeys_Keys[20], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
234 print(" "); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
235 for ( uint8_t c = 21; c < 27; c++ ) |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
236 printHex_op( USBKeys_Keys[ c ], 2 ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
237 print( NL ); |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
238 } |
1495b4504a59
Adding outputDebug command
Jacob Alexander <haata@kiibohd.com>
parents:
251
diff
changeset
|
239 |
251
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
240 tx_packet->len = 0; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
241 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
242 // Modifiers |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
243 *tx_buf++ = 0x01; // ID |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
244 *tx_buf++ = USBKeys_Modifiers; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
245 tx_packet->len += 2; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
246 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
247 // 4-49 (first 6 bytes) |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
248 memcpy( tx_buf, USBKeys_Keys, 6 ); |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
249 tx_buf += 6; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
250 tx_packet->len += 6; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
251 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
252 // 51-155 (Middle 14 bytes) |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
253 memcpy( tx_buf, USBKeys_Keys + 6, 14 ); |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
254 tx_buf += 14; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
255 tx_packet->len += 14; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
256 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
257 // 157-164 (Next byte) |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
258 memcpy( tx_buf, USBKeys_Keys + 20, 1 ); |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
259 tx_buf += 1; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
260 tx_packet->len += 1; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
261 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
262 // 176-221 (last 6 bytes) |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
263 memcpy( tx_buf, USBKeys_Keys + 21, 6 ); |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
264 tx_packet->len += 6; |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
265 |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
266 // Send USB Packet |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
267 usb_tx( NKRO_KEYBOARD_ENDPOINT, tx_packet ); |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
268 USBKeys_Changed = USBKeyChangeState_None; // Mark sent |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
269 } |
d3ac199593d6
Fixing NKRO on Windows 8.1
Jacob Alexander <haata@kiibohd.com>
parents:
248
diff
changeset
|
270 |
232
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
271 break; |
9a3c9f6f4866
USB NKRO working for ARM!
Jacob Alexander <haata@kiibohd.com>
parents:
224
diff
changeset
|
272 } |
224
138e5ca7f8e4
Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
118
diff
changeset
|
273 |
138e5ca7f8e4
Preparing ARM for USB NKRO
Jacob Alexander <haata@kiibohd.com>
parents:
118
diff
changeset
|
274 return; |
104
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
275 } |
e84738d174bc
Moving USB to Output in preparation for additional Output types.
Jacob Alexander <haata@kiibohd.com>
parents:
diff
changeset
|
276 |