Author Topic: TMK USB to USB keyboard converter  (Read 522072 times)

0 Members and 1 Guest are viewing this topic.

Offline mblsha

  • Posts: 7
Re: USB to USB keyboard converter
« Reply #500 on: Mon, 22 July 2019, 13:48:32 »
Not sure whether I should try any Magic commands (they don't seem to work, as the COMMAND_ENABLED is commented out in the Makefile).

// plugging the Planck EZ
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 7159
usb_state: 90
speed: full
// pressing the keys do not result in any output

// unplugging
usb_state: 12

// plugging the Kinesis Advantage2
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 3583
usb_state: 90
speed: full
input 1: 00 00 1D 00 00 00 00 00
state:  00 00 1D 00 00 00 00 00
« Last Edit: Mon, 22 July 2019, 13:50:12 by mblsha »

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #501 on: Wed, 24 July 2019, 07:35:15 »
Thanks for testing.

Not sure whether I should try any Magic commands (they don't seem to work, as the COMMAND_ENABLED is commented out in the Makefile).

// plugging the Planck EZ
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 7159
usb_state: 90
speed: full
// pressing the keys do not result in any output


hmm, the converter seems to initialize and recogize the keyboard properly,  I can't see why it doesn't register any key unfortunately :(

Did you try the latest firmware on the converter yet? You can get it from Keyboard Editor.
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb

With the latest firmware console shows version string like below when it starts up.

Code: [Select]
TMK:8449ad38/LUFA


Planck EZ uses STM32F3 mcu and QMK/Chibios firmware and I don't own and haven't tried any similar keyboard like that so far. I'm missing something imporant to be supported in the converter firmware, perhaps.
Then, I'll have to find keyboard with similar mcu and test QMK/Chibios on it with the converter when I get time.

Offline mblsha

  • Posts: 7
Re: USB to USB keyboard converter
« Reply #502 on: Thu, 25 July 2019, 01:32:13 »
Did you try the latest firmware on the converter yet? You can get it from Keyboard Editor.
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb

I thought that I built the last version from source, but it was a couple of weeks out of date. Here's the output:

Code: [Select]
TMK:8449ad38/LUFA

usb_state: 12
usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 7163
usb_state: 90
speed: full

USB configured.

Keyboard start.

Still doesn't work though. Will try to help if there's anything else I could do.

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #503 on: Mon, 12 August 2019, 17:52:10 »
Hi hasu, I'm trying out a new keyboard (Asus Strix Tactic Pro) that has macro buttons that are configurable via the software. The keyboard report for all of the macro keys as default are:

input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00

but if I bind them to a bind-able key it will report that keycode correctly.

Can I set these blank keys to something else? I'm not sure how I would set it up via keymap_common.h. Could I make them F13-24 or something? The keyboard software won't let me bind them to F13-24

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #504 on: Mon, 12 August 2019, 18:56:13 »
Hi hasu, I'm trying out a new keyboard (Asus Strix Tactic Pro) that has macro buttons that are configurable via the software. The keyboard report for all of the macro keys as default are:

input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00

but if I bind them to a bind-able key it will report that keycode correctly.

Can I set these blank keys to something else? I'm not sure how I would set it up via keymap_common.h. Could I make them F13-24 or something? The keyboard software won't let me bind them to F13-24

The converter can handle key if you see vlaue other than '00' in 'input 1' line when it is depressed.
The value is exact HID usage and corespond to index of array in keymap_common.h. You can change KEYMAP_ALL() macro as you want to use it in keymap.c
https://github.com/tmk/tmk_keyboard/blob/master/converter/usb_usb/keymap_common.h#L80-L111


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #505 on: Mon, 12 August 2019, 19:31:28 »
Good to know. Just a few moments ago I figured out how to trick the software to accepting all the keycodes  :p

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #506 on: Tue, 13 August 2019, 03:37:46 »
I set KC_HENK (89) on my JIS layout keyboard as Space (2C) and I noticed I've been missing spaces, but I don't know if its from the keyboard or the converter

Code: [Select]
input 1:  00 00 17 00 00 00 00 00
state:  00 00 17 00 00 00 00 00
keyboard_report: 00 00 00 00 17 00 00 00
input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
input 1:  00 00 00 00 00 00 00 00
keyboard_report: 00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
input 1:  00 00 0C 00 00 00 00 00
state:  00 00 0C 00 00 00 00 00
keyboard_report: 00 00 0C 00 00 00 00 00
input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
keyboard_report: 00 00 00 00 00 00 00 00

I had hid_listen up while I was typing and this was supposed to be t(space)i but my KC_HENK (89) Space key just showed up as 00

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #507 on: Tue, 13 August 2019, 05:04:33 »
What is your "JIS layout keyboard" exactly? manufacturer, model name  and pic of the key would be kind of useful.
And your keymap would be uselful to debug. Share your keymap editor URL or keymap source.


Can you get space correctly on computer when the key is pressed solely?
And the missing space happens only when the key is typed with other keys like 't(space)i'?

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #508 on: Tue, 13 August 2019, 10:30:05 »
What is your "JIS layout keyboard" exactly? manufacturer, model name  and pic of the key would be kind of useful.
And your keymap would be uselful to debug. Share your keymap editor URL or keymap source.

ASUS Strix Tactic Pro

entry in keymap_common.h
Code: [Select]
/*             ,---.   ,---------------. ,---------------. ,---------------. ,-----------.
 *             |Esc|   |F1 |F2 |F3 |F4 | |F5 |F6 |F7 |F8 | |F9 |F10|F11|F12| |PrS|ScL|Pau|
 *             `---'   `---------------' `---------------' `---------------' `-----------'
 * ,-------.   ,-----------------------------------------------------------. ,-----------. ,---------------.
 * |F13|F18|   |  `|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  ^|JPY|Bsp| |Ins|Hom|PgU| |NmL|  /|  *|  -|
 * |-------|   |-----------------------------------------------------------| |-----------| |---------------|
 * |F14|F19|   |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  @|  [| Retn| |Del|End|PgD| |  7|  8|  9|  +|
 * |-------|   |------------------------------------------------------`    | `-----------' |-----------|   |
 * |F15|F20|   |CapsL |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  :|  ]|    |               |  4|  5|  6|   |
 * |-------|   |-----------------------------------------------------------|     ,---.     |---------------|
 * |F16|F21|   |Shft    |  Z|  X|  C|  V|  B|  N|  M|  ,|  ,|  /| RO|Shift |     |Up |     |  1|  2|  3|Ent|
 * |-------|   |-----------------------------------------------------------| ,-----------. |-----------|   |
 * |F17|F22|   |Ctl|Gui|Alt|MHEN|      Space      |HENK|KNA|Alt|Gui|App|Ctl| |Lef|Dow|Rig| |      0|  .|   |
 * `-------'   `-----------------------------------------------------------' `-----------' `---------------'
 *                               ,-----------.
 *                               |F23|F24|Exe|
 *                               `-----------'
 */
#define KEYMAP_STP( \
            K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73,K74,                                           \
    K29,    K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45,      K46,K47,K48,                            \
    K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A,  K49,K4A,K4B,  K53,K54,K55,K56,          \
    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K28,  K4C,K4D,K4E,  K5F,K60,K61,K57,          \
    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,K32,                        K5C,K5D,K5E,              \
    KE1,K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,        K87,KE5,      K52,      K59,K5A,K5B,K58,          \
    KE0,KE3,KE2,K8B,    K2C,        K8A,K88,KE6,KE7,K65,KE4,      K50,K51,K4F,  K62,    K63               \
) KEYMAP_ALL( \
            K68,K69,K6A,K6B,K6C,K6D,K6E,K6F,K70,K71,K72,K73,                                              \
    K29,    K3A,K3B,K3C,K3D,K3E,K3F,K40,K41,K42,K43,K44,K45,      K46,K47,K48,  NO, NO, NO, NO,  NO,      \
    K35,K1E,K1F,K20,K21,K22,K23,K24,K25,K26,K27,K2D,K2E,K89,K2A,  K49,K4A,K4B,  K53,K54,K55,K56, NO, NO,  \
    K2B,K14,K1A,K08,K15,K17,K1C,K18,K0C,K12,K13,K2F,K30,    K32,  K4C,K4D,K4E,  K5F,K60,K61,K57, NO, NO,  \
    K39,K04,K16,K07,K09,K0A,K0B,K0D,K0E,K0F,K33,K34,    K32,K28,                K5C,K5D,K5E,NO,  NO, NO,  \
    KE1,NO, K1D,K1B,K06,K19,K05,K11,K10,K36,K37,K38,    K87,KE5,      K52,      K59,K5A,K5B,NO,  K74, NO, \
    KE0,KE3,KE2,K8B,NO,     K2C,    NO, K8A,K88,KE6,KE7,K65,KE4,  K50,K51,K4F,  K62,    K63,K58, NO, NO   \
)

keymap.c
Code: [Select]
#include "action_layer.h "
#include "keymap_common.h"

const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* 0: Chat Layout */
    KEYMAP_STP(
          FN9,FN10,FN11,FN12,FN13,      FN0,NUBS,NUHS,BSLS,M,      LALT, FN0, P0,                                                          \
    ESC,  F1,  F2,  F3,  F4,   F5,  F6,  F7,  F8,    F9,  F10,  F11, F12,          PSCR,SLCK,BRK,                                          \
    NUBS, 1,   2,   3,   4,   5,   6,   7,   8,   9,    0, MINS,  EQL, JPY, BSPC,  INS, HOME,PGUP,    NLCK,PSLS,PAST,PMNS,                 \
    TAB,  Q,   W,   E,   R,   T,   Y,   U,   I,   O,    P, LBRC, RBRC, ENT,        DEL, END, PGDN,    P7,  P8,  P9,  PPLS,                 \
    LSFT, A,   S,   D,   F,   G,   H,   J,   K,   L, SCLN, QUOT, NUHS,                                P4,  P5,  P6,                        \
    LSFT, Z,   X,   C,   V,   B,   N,   M,           COMM, DOT,  SLSH, BSLS,RSFT,        UP,          P1,  P2,  P3,  PENT,                 \
    LCTL,LGUI,LALT,SPC,  LALT,          SPC,KANA,RALT,           RGUI, APP, RCTL,  LEFT,DOWN,RGHT,    P0,       PDOT),                     \
    /* 1: FN1 */
    KEYMAP_STP(
          TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,                                                    \
    TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,              TRNS, TRNS, TRNS,                           \
    TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,  TRNS, TRNS, TRNS,   TRNS, TRNS, TRNS, TRNS, \
    TRNS, ESC,  P8, P9, P0, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,              TRNS, TRNS, TRNS,   TRNS, TRNS, TRNS, TRNS, \
    TRNS, P4, P2, P6, PAST, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,       TRNS,                                  TRNS, TRNS, TRNS,       \
    TRNS, TRNS, TRNS, PDOT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,       TRNS, TRNS,             TRNS,          TRNS, TRNS, TRNS, TRNS, \
    TRNS, BSLS, TRNS, TRNS,       TRNS,             TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,        TRNS, TRNS, TRNS,   TRNS, TRNS),               
};

Quote
Can you get space correctly on computer when the key is pressed solely?
And the missing space happens only when the key is typed with other keys like 't(space)i'?

Code: [Select]
input 1:  00 00 8A 00 00 00 00 00
state:  00 00 8A 00 00 00 00 00
keyboard_report: 00 00 2C 00 00 00 00 00
input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
keyboard_report: 00 00 00 00 00 00 00 00

This is what it normally looks like
Missing space does happen when typed with other keys. I can be typing normally and the space just doesn't come out, even though I'm 100% positive I pressed it
Space as Space works fine through the converter
Update: I remapped HENK to LCTRL, typed "a," held the new CTRL and pressed "a" twice. The result was: Select all, typed "a." LCTRL was released even though I was holding it. Same thing happened when remapping MHEN to LCTRL. It did not happen when I binded Space to LCTRL. Hmm.
Update 2: I've now tried it with the bottom row set as LCTRL. Only MHEN, HENK, and KANA result in: Select all, type "a".

USB Descriptor
More
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 21
Number Of Open Pipes 3

Device Descriptor ASUS Strix Tactic Pro Gaming Keyboard
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 195Dh Itron Technology iONE
10 idProduct 2 2039h 
12 bcdDevice 2 0045h 0.45
14 iManufacturer 1 01h "ASUS"
15 iProduct 1 02h "ASUS Strix Tactic Pro Gaming Keyboard"
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 0054h 
4 bNumInterfaces 1 03h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0041h 65 bytes

Endpoint Descriptor 81 1 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 02h Mouse
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 00FBh 251 bytes

Endpoint Descriptor 82 2 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Interface Descriptor 2/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 02h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0041h 65 bytes

Endpoint Descriptor 83 3 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
    Usage Page (LEDs) 05 08 
    Report Size (1) 75 01 
    Report Count (5) 95 05 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Kana) 29 05 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Size (3) 75 03 
    Report Count (1) 95 01 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum 2A FF 00 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Report Size (8) 75 08 
    Report Count (6) 95 06 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Mouse
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Mouse) 09 02 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage (Pointer) 09 01 
    Collection (Physical) A1 00 
        Usage Page (Button) 05 09 
        Usage Minimum (Button 1) 19 01 
        Usage Maximum (Button 5) 29 05 
        Logical Minimum (0) 15 00 
        Logical Maximum (1) 25 01 
        Report Size (1) 75 01 
        Report Count (5) 95 05 
        Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
        Report Size (1) 75 01 
        Report Count (3) 95 03 
        Input (Cnst,Ary,Abs) 81 01 
        Usage Page (Generic Desktop) 05 01 
        Usage (X) 09 30 
        Usage (Y) 09 31 
        Logical Minimum (-32767) 16 01 80 
        Logical Maximum (32767) 26 FF 7F 
        Report Size (16) 75 10 
        Report Count (2) 95 02 
        Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 
        Usage (Wheel) 09 38 
        Logical Minimum (-127) 15 81 
        Logical Maximum (127) 25 7F 
        Report Size (8) 75 08 
        Report Count (1) 95 01 
        Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 
        Usage Page (Consumer Devices) 05 0C 
        Usage (AC Pan) 0A 38 02 
        Report Count (1) 95 01 
        Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 
    End Collection C0 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (System Control) 09 80 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Usage Minimum (System Power Down) 19 81 
    Usage Maximum (System Wake Up) 29 83 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Size (5) 75 05 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (3) 85 03 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum 2A FF 7F 
    Logical Minimum (0) 15 00 
    Logical Maximum (32767) 26 FF 7F 
    Report Size (16) 75 10 
    Report Count (3) 95 03 
    Input (Data,Ary,Abs) 81 00 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 
Usage Page (Vendor-Defined 1) 06 00 FF 
Usage (Vendor-Defined 1) 09 01 
Collection (Application) A1 01 
    Report ID (6) 85 06 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Usage (Vendor-Defined 48) 09 30 
    Report Count (3) 95 03 
    Report Size (8) 75 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
End Collection C0 
Usage Page (Vendor-Defined 2) 06 01 FF 
Usage (Vendor-Defined 1) 09 01 
Collection (Application) A1 01 
    Report ID (7) 85 07 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Usage (Vendor-Defined 32) 09 20 
    Report Size (8) 75 08 
    Report Count (7) 95 07 
    Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Report ID (8) 85 08 
    Usage Page (Keyboard/Keypad) 05 07 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum 2A FF 00 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Report Size (8) 75 08 
    Report Count (6) 95 06 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Report ID (9) 85 09 
    Report Count (112) 95 70 
    Report Size (1) 75 01 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keypad =) 29 67 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (8) 95 08 
    Report Size (1) 75 01 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 

Interface 2 HID Report Descriptor Vendor-Defined 65280
Item Tag (Value) Raw Data
Usage Page (Vendor-Defined 1) 06 00 FF 
Usage (Vendor-Defined 65280) 0A 00 FF 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Usage (Vendor-Defined 48) 09 30 
    Report Size (8) 75 08 
    Report Count (511) 96 FF 01 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage (Vendor-Defined 49) 09 31 
    Report Size (8) 75 08 
    Report Count (8) 95 08 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
End Collection C0 
Usage Page (Vendor-Defined 2) 06 01 FF 
Usage (Vendor-Defined 65280) 0A 00 FF 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Usage (Vendor-Defined 48) 09 30 
    Report Size (8) 75 08 
    Report Count (7) 95 07 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage (Vendor-Defined 49) 09 31 
    Report Size (8) 75 08 
    Report Count (7) 95 07 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
End Collection C0 
« Last Edit: Tue, 13 August 2019, 12:02:34 by Harima »

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #509 on: Tue, 13 August 2019, 12:00:40 »
Thanks for the pic, debug log and descriptors.

Hmm, it sounds to me like keyboard firmware bug or intentional design at this point.
Your keymap code looks good but I didn't compile it to test.

Download firmware from link below and try it. You will get 'b' when the Henkan(変換) key is depressed.
Let me know whether you miss 'b' during typing.

I tested this firmware with HHKB pro JP which is my only JIS keyboard in hand, and I got 'tbi' every time when I type t, Henkan and i keys. Converter firmware seems to work for Henkan key correctly.

Manufacturer of the keyboard may have new keyboard firmware to fix bugs, check their support web pages.


http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb#456C4oOW4Kmg6biL5oKGcOOOiNeA5rWM4YaA7LCD5oCG6KyB7aOw1oDimKPkrKvmq7HssoLpoJXog4PooKDguILTouKAg+GEuuWiqu6IpOysi8K615HmkKLkoo/is7zipIjqnYLplIrjoIjliaHktoXkiJXjoZHuhZ/ouKHjorLsvYPoqo7jtozgo6Pmvp3unJzjsbPvjKLhlqbmiqPij5PiiaPijaPikKPimKDnjKHujKfuhaLhhaPqhaLqhaPthaXmjaHmkKHmk6Hmh6Hmn6PsiJPsjqPsiqDmgbfinaPmj4Tij4Tuj4Huj4fumKLhmKPqmKLqmKPtmKLmmKPmlKDimKTumKHumKXugbLuiJLujqLuiqLuj5LuiaLujaLukKLuk6Luh6Lun6XuiJXujqXuiqXuj5XuiaXuhpPpl6Til6Tul6Hul6fui4DhiIrsiozul4Ptk7jIhOmIgeGsk+6ioOGHvNCqxIftj6zinrHsorDqiaEn7rCj06DvuJ7ItOW9gOafh+GhjO+js9af4Zqh64+o7rOS3Lzooo/kpJDtg4Tgs5LhroTkg4jppIjvqKPnrp3ivqftmabjj4juspHknKPiqZPpp4jiq6zmqq3kvYDtj4HjkZrnvZzlg5HkvY/mrrHvoKvcoOyOkOuCmNO65Y2D6qKs7ZGA546a6rWi6a2k7Z2S44aZ6Imt7Zqz5pa57bup55Ga6Ya26IGH6o+T5K6R74u96bqR5a6k47CY5paG4o+h7JGQ5pi84aqP7Jmd6Keo7Im77ZKb5LeH5Y+J7amG5pCy6a+N6KiL7aen54Ww64ij4rKX5I+p6qu/6pq+5aiv7Z2r6ruc742u65aY5rGW6a6d6r2H5ra17a+u55yr7peh7420556Y4L2h766l7ru075iz7bW27LqH5K++76Oq65q65LGv646T7Ieq7pWy47+d6LyP4Y+j76u076a/472v4ryx6beC74a766C847qP5L6T7K+s75u467G+6r2f6a+N4oCL7pCA

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #510 on: Tue, 13 August 2019, 12:04:37 »
Thanks, I'll try it out. Check out my edit to the post above

Update: It happens with your firmware as well. At first, I was just doing B(Henkan), Space and it seems normal. But as soon as I started typing the string "asdfb" in succession, b failed and I made sure that each press was depressed all the way. It also appeared again on the hid_listen. It might be a keyboard firmware bug

Update 2: I can confirm that it is the keyboard's firmware. I connected it without the converter and tried to record macros on my Logitech mouse's software and confirmed that Muhenkan, Henkan, and Katakana/Hiragana keys when held release after pressing any other key. I will try to contact the manufacturer. Thanks
« Last Edit: Tue, 13 August 2019, 19:29:06 by Harima »

Offline GreyGnome

  • Posts: 2
  • Location: Chicago, IL, USA
    • Schwager
Re: USB to USB keyboard converter
« Reply #511 on: Thu, 15 August 2019, 21:44:02 »
Hi, I just got my USB to USB converter and I can't seem to talk to it. Here's what happens when I run dfu-programmer in debug mode. This is on my Lenovo 430s running Fedora 28 Linux. I notice that dfu-programmer hasthe proper chip_id and vendor_id. What can I do next? Thanks.

[schwager@rodin usb_usb]$ sudo dfu-programmer atmega32u4 read --debug 9
     target: atmega32u4
    chip_id: 0x2ff4
  vendor_id: 0x03eb
    command: read
      quiet: false
      debug: 9
device_type: AVR
------ command specific below ------

0%                            100%  Reading 0x7000 bytes...
[ X  ERROR
Memory read error, use debug for more info.
[schwager@rodin usb_usb]$ dmesg | tail
[52398.591346] usb 1-1.2: Product: ATm32U4DFU
[52398.591348] usb 1-1.2: Manufacturer: ATMEL
[52398.591349] usb 1-1.2: SerialNumber: 1.0.0
[52402.363932] usb 1-1.2: USB disconnect, device number 11
[52405.318225] usb 1-1.2: new full-speed USB device number 12 using ehci-pci
[52405.399738] usb 1-1.2: New USB device found, idVendor=03eb, idProduct=2ff4, bcdDevice= 0.00
[52405.399743] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[52405.399746] usb 1-1.2: Product: ATm32U4DFU
[52405.399748] usb 1-1.2: Manufacturer: ATMEL
[52405.399750] usb 1-1.2: SerialNumber: 1.0.0


Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #512 on: Thu, 15 August 2019, 22:06:10 »
as first post says, you can use commands like below to program converter.

Code: [Select]
$ dfu-programmer atmega32u4 erase --force
$ dfu-programmer atmega32u4 flash <your_firmware.hex>
$ dfu-programmer atmega32u4 reset

Also refer to this wiki entry.
https://github.com/tmk/tmk_keyboard/wiki#flash-firmware


With the command  'dfu-programmer atmega32u4 read --debug 9' I also get same error message. I think ATmega32u4 bootloader doesn't support the 'read' command probably, and I don't use the command. Note that you don't need the command to program the converter. You can get more detailed info with '--debug 999', though.
« Last Edit: Thu, 15 August 2019, 22:10:19 by hasu »

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #513 on: Fri, 16 August 2019, 11:55:25 »
A keyboard that I previously thought didn't work with the converter actually works. But only when it's connected to a hub, but not when connected directly for some reason. DSI Left Handed Keyboard

More
Connection Status Device connected
Current Configuration 1
Speed Low (1.5 Mbit/s)
Device Address 11
Number Of Open Pipes 2

Device Descriptor
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 04F3h Elan Microelectronics Corp.
10 idProduct 2 0103h 
12 bcdDevice 2 0107h 1.07
14 iManufacturer 1 00h 
15 iProduct 1 00h 
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 003Bh 
4 bNumInterfaces 1 02h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0036h 54 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0034h 52 bytes

Endpoint Descriptor 82 2 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0003h 3 bytes
6 bInterval 1 0Ah 10 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (5) 95 05 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keyboard LANG2) 29 91 
    Logical Maximum (255) 26 FF 00 
    Report Count (6) 95 06 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Consumer Control
Item Tag (Value) Raw Data
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (AC Format) 2A 3C 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (572) 26 3C 02 
    Report Count (1) 95 01 
    Report Size (16) 75 10 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (System Control) 09 80 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Usage Minimum (System Power Down) 19 81 
    Usage Maximum (System Wake Up) 29 83 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (5) 95 05 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 

Offline GreyGnome

  • Posts: 2
  • Location: Chicago, IL, USA
    • Schwager
Re: USB to USB keyboard converter
« Reply #514 on: Fri, 16 August 2019, 17:24:21 »
as first post says, you can use commands like below to program converter.

Code: [Select]
$ dfu-programmer atmega32u4 erase --force
$ dfu-programmer atmega32u4 flash <your_firmware.hex>
$ dfu-programmer atmega32u4 reset

OK, it looks like "sudo" was the key. As root, I'm able to do it. Thanks!

Now I have two questions:
  • The keyboard editor at http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb can only perform conversions, correct? It's not capable of macro programming, right?
  • What do I do if I want to remap keys that are not shown on the editor page? For example, I have a keyboard with a "Back" and "Fwd" and other keys on the left, and I don't know what keycodes they're sending, but I'd like to map them to something useful. Is that possible?


Thanks!

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #515 on: Fri, 16 August 2019, 17:39:27 »
My Koolertron/Smartyao SMKD72 keyboard/numpad (https://smile.amazon.com/gp/product/B076LYKPX4/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1) isn't working with the converter, but it works without the converter on a PS4 where it only accepts 6KRO.

Windows 8.1
Default keymap

- Debug outputs from 'hid_listen' command
Code: [Select]
Waiting for new device:...............
Listening:


TMK:8449ad38/LUFA

usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51

USB configured.

Keyboard start.
host.Task: 2337
usb_state: 90
speed: full

USB Descriptor:
More
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 28
Number Of Open Pipes 2

Device Descriptor Thumb Keyboard
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 04B4h Cypress Semiconductor Corp.
10 idProduct 2 0818h 
12 bcdDevice 2 6010h 60.10
14 iManufacturer 1 01h "LingYao ShangHai"
15 iProduct 1 02h "Thumb Keyboard"
16 iSerialNumber 1 03h "081820131130"
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 003Bh 
4 bNumInterfaces 1 02h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 80h Bus Powered
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..0.....  No
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 04h "Keyboard "

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 21h US
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 003Fh 63 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0012h 18 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 02h Mouse
8 iInterface 1 05h "Mouse"

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 21h US
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0032h 50 bytes

Endpoint Descriptor 82 2 In, Interrupt, 2 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 02h 2 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (8) 75 08 
    Input (Cnst,Ary,Abs) 81 01 
    Report Count (3) 95 03 
    Report Size (1) 75 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (1) 95 01 
    Report Size (5) 75 05 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Report Count (16) 95 10 
    Report Size (8) 75 08 
    Logical Minimum (0) 15 00 
    Logical Maximum (-1) 25 FF 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum 29 FF 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Mouse
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Mouse) 09 02 
Collection (Application) A1 01 
    Usage (Pointer) 09 01 
    Collection (Physical) A1 00 
        Usage Page (Button) 05 09 
        Usage Minimum (Button 1) 19 01 
        Usage Maximum (Button 3) 29 03 
        Logical Minimum (0) 15 00 
        Logical Maximum (1) 25 01 
        Report Count (3) 95 03 
        Report Size (1) 75 01 
        Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
        Report Count (1) 95 01 
        Report Size (5) 75 05 
        Input (Cnst,Ary,Abs) 81 01 
        Usage Page (Generic Desktop) 05 01 
        Usage (X) 09 30 
        Usage (Y) 09 31 
        Logical Minimum (-127) 15 81 
        Logical Maximum (127) 25 7F 
        Report Size (8) 75 08 
        Report Count (2) 95 02 
        Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 
    End Collection C0 
End Collection C0 


Edit: Was mashing on keys to get a response, it did but its weird, it only shows sometimes I don't know what causes it
Code: [Select]
input 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 00 00 00 00 00 00
input 1: 00 00 0E 00 54 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 0E 54 00 00 00 00
input 1: 00 00 60 5F 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 60 5F 00 00 00 00
input 1: 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 60 00 00 00 00 00
input 1: 00 00 00 0C 0B 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 0C 0B 00 00 00 00
input 1: 00 00 10 11 1D 1C 14 13 19 18 17 15 00 5B 00 00 12 00
state:  00 00 10 11 1D 1C 14 13
input 1: 00 00 50 63 00 1D 1C 18 00 00 00 00 00 00 00 00 12 00
state:  00 00 50 63 1D 1C 18 00
input 1: 00 00 00 5B 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 5B 00 00 00 00 00
input 1: 00 00 00 63 1A 18 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 63 1A 18 00 00 00
input 1: 00 00 0B 05 04 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 0B 05 04 00 00 00
input 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 00 00 00 00 00 00
input 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 00 00 00 00 00 00
input 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 00 00 00 00 00 00
input 1: 00 00 5E 5D 00 5A 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 5E 5D 5A 00 00 00
input 1: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 00 00 00 00 00 00
input 1: 00 00 1B 1C 19 18 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 1B 1C 19 18 00 00

According to aquakeytest it's 16KRO
« Last Edit: Fri, 16 August 2019, 19:16:36 by Harima »

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #516 on: Fri, 16 August 2019, 21:50:50 »
Thanks for reporting.
According to its descriptor it looks normal keyboard(6KRO) and the converter should support it.
There may be a glitch somewehre in current converter firmware.

Aren't there something interesting in hid_listen log when connecting it with or without hub ?
How did you connect the hub, between converter and keyboard or between computer and covnerter?


A keyboard that I previously thought didn't work with the converter actually works. But only when it's connected to a hub, but not when connected directly for some reason. DSI Left Handed Keyboard

More
Connection Status Device connected
Current Configuration 1
Speed Low (1.5 Mbit/s)
Device Address 11
Number Of Open Pipes 2

Device Descriptor
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 04F3h Elan Microelectronics Corp.
10 idProduct 2 0103h 
12 bcdDevice 2 0107h 1.07
14 iManufacturer 1 00h 
15 iProduct 1 00h 
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 003Bh 
4 bNumInterfaces 1 02h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0036h 54 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0034h 52 bytes

Endpoint Descriptor 82 2 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0003h 3 bytes
6 bInterval 1 0Ah 10 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (5) 95 05 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keyboard LANG2) 29 91 
    Logical Maximum (255) 26 FF 00 
    Report Count (6) 95 06 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Consumer Control
Item Tag (Value) Raw Data
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (AC Format) 2A 3C 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (572) 26 3C 02 
    Report Count (1) 95 01 
    Report Size (16) 75 10 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (System Control) 09 80 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Usage Minimum (System Power Down) 19 81 
    Usage Maximum (System Wake Up) 29 83 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (5) 95 05 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #517 on: Fri, 16 August 2019, 22:16:44 »
Thanks for reporting.
According to its descriptor it looks normal keyboard(6KRO) and the converter should support it.
There may be a glitch somewehre in current converter firmware.

Aren't there something interesting in hid_listen log when connecting it with or without hub ?
How did you connect the hub, between converter and keyboard or between computer and covnerter?


A keyboard that I previously thought didn't work with the converter actually works. But only when it's connected to a hub, but not when connected directly for some reason. DSI Left Handed Keyboard

More
Connection Status Device connected
Current Configuration 1
Speed Low (1.5 Mbit/s)
Device Address 11
Number Of Open Pipes 2

Device Descriptor
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 04F3h Elan Microelectronics Corp.
10 idProduct 2 0103h 
12 bcdDevice 2 0107h 1.07
14 iManufacturer 1 00h 
15 iProduct 1 00h 
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 003Bh 
4 bNumInterfaces 1 02h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0036h 54 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0034h 52 bytes

Endpoint Descriptor 82 2 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0003h 3 bytes
6 bInterval 1 0Ah 10 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (5) 95 05 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Size (8) 75 08 
    Report Count (1) 95 01 
    Input (Cnst,Ary,Abs) 81 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keyboard LANG2) 29 91 
    Logical Maximum (255) 26 FF 00 
    Report Count (6) 95 06 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Consumer Control
Item Tag (Value) Raw Data
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (AC Format) 2A 3C 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (572) 26 3C 02 
    Report Count (1) 95 01 
    Report Size (16) 75 10 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (System Control) 09 80 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Usage Minimum (System Power Down) 19 81 
    Usage Maximum (System Wake Up) 29 83 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (3) 95 03 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (5) 95 05 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 

Turns out my copy of the repository is outdated, it works connected straight to the converter with the latest firmware.
But I was able to make it even work on my older firmware by disconnecting and reconnecting the DSI keyboard to the converter after it was connected. Sorry about that! Updating now

Any clues to why my Koolertron isn't working?

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #518 on: Fri, 16 August 2019, 23:02:51 »
Great.
I changed source code repo drastically a few months ago, espeically for USB_Host_Shield_2.0 submodule. You may have to remove the submodule and reinit carefully by hand to update it, or just clone repo from scratch and init the submodule. Sorry for incovenience.

You can get firmware built from the semi-latest source with fixes from Keymap Editor. Try it first when you are in trouble with the converter.

If you didn't try firmware download from Keymap Editor yet, test it with the Koolertron.

Turns out my copy of the repository is outdated, it works connected straight to the converter with the latest firmware.
But I was able to make it even work on my older firmware by disconnecting and reconnecting the DSI keyboard to the converter after it was connected. Sorry about that! Updating now

Any clues to why my Koolertron isn't working?


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #519 on: Fri, 16 August 2019, 23:15:29 »
Code: [Select]
TMK:229693e6+/LUFA

usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51

USB configured.

Keyboard start.
host.Task: 2336
usb_state: 90
speed: full

This is the hid_listen I get using the Koolertron with the latest firmware

Great.
I changed source code repo drastically a few months ago, espeically for USB_Host_Shield_2.0 submodule. You may have to remove the submodule and reinit carefully by hand to update it, or just clone repo from scratch and init the submodule. Sorry for incovenience.

You can get firmware built from the semi-latest source with fixes from Keymap Editor. Try it first when you are in trouble with the converter.

If you didn't try firmware download from Keymap Editor yet, test it with the Koolertron.

Turns out my copy of the repository is outdated, it works connected straight to the converter with the latest firmware.
But I was able to make it even work on my older firmware by disconnecting and reconnecting the DSI keyboard to the converter after it was connected. Sorry about that! Updating now

Any clues to why my Koolertron isn't working?

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #520 on: Sat, 17 August 2019, 07:14:51 »
Hmm, that log looks to me normal for converter startup.

I think it is still worth trying firmware downloaded from Keyboard Editor.
http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb


Code: [Select]
TMK:229693e6+/LUFA

usb_state: 20
usb_state: 40
usb_state: 50
usb_state: 51

USB configured.

Keyboard start.
host.Task: 2336
usb_state: 90
speed: full

This is the hid_listen I get using the Koolertron with the latest firmware


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #521 on: Sat, 17 August 2019, 11:24:49 »
I get the exact same hid_listen from Keymap Editor. I have to press a key really fast to get a response from hid_listen and it looks like this:

Code: [Select]
input 1: 00 00 62 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 62 00 00 00 00 00


Probably not useful, but this is hid_listen when connected to soarer's converter
Code: [Select]
Listening:
wEE

remaining: 0022
22@0008 remaps
layerdefs: 00
max_layer: 00
total_macros: 00
alloc ok.


Keyboard ID: 0000
Code Set: 1
Mode: PC/XT
« Last Edit: Sat, 17 August 2019, 11:28:16 by Harima »

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #522 on: Sun, 18 August 2019, 07:25:29 »
The converter seems to fail to request the keyboard to use 6KRO instead of 16KRO as your this previous post.
But I can't find any concrete clue on this at the moment.


I get the exact same hid_listen from Keymap Editor. I have to press a key really fast to get a response from hid_listen and it looks like this:

Code: [Select]
input 1: 00 00 62 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00
state:  00 00 62 00 00 00 00 00


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #523 on: Mon, 19 August 2019, 22:13:13 »
Works: Vortex Core

Descriptor
More
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 11
Number Of Open Pipes 4

Device Descriptor USB-HID Keyboard
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0110h USB Spec 1.1
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 04D9h Holtek Semiconductor, Inc.
10 idProduct 2 0175h 
12 bcdDevice 2 1103h 11.03
14 iManufacturer 1 00h 
15 iProduct 1 01h "USB-HID Keyboard"
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 005Bh 
4 bNumInterfaces 1 03h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0040h 64 bytes

Endpoint Descriptor 81 1 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 01h 1 ms

Interface Descriptor 1/0 HID, 2 Endpoints
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 02h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0022h 34 bytes

Endpoint Descriptor 83 3 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 83h 3 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Endpoint Descriptor 04 4 Out, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 04h 4 Out
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Interface Descriptor 2/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 02h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 00h 
7 bInterfaceProtocol 1 00h 
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0086h 134 bytes

Endpoint Descriptor 82 2 In, Interrupt, 1 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 01h 1 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (8) 75 08 
    Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03 
    Report Count (3) 95 03 
    Report Size (1) 75 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (1) 95 01 
    Report Size (5) 75 05 
    Output (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 03 
    Report Count (6) 95 06 
    Report Size (8) 75 08 
    Logical Minimum (0) 15 00 
    Logical Maximum (164) 26 A4 00 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keyboard ExSel) 29 A4 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Vendor-Defined 1
Item Tag (Value) Raw Data
Usage Page (Vendor-Defined 1) 06 00 FF 
Usage (Vendor-Defined 1) 09 01 
Collection (Application) A1 01 
    Usage (Vendor-Defined 2) 09 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Report Size (8) 75 08 
    Report Count (64) 95 40 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage (Vendor-Defined 3) 09 03 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Report Size (8) 75 08 
    Report Count (64) 95 40 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
End Collection C0 

Interface 2 HID Report Descriptor System Control
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (System Control) 09 80 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage Minimum (System Power Down) 19 81 
    Usage Maximum (System Wake Up) 29 83 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Count (3) 95 03 
    Report Size (1) 75 01 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (5) 75 05 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Count (18) 95 12 
    Report Size (1) 75 01 
    Usage (AL Consumer Control Configuration) 0A 83 01 
    Usage (AL Email Reader) 0A 8A 01 
    Usage (AL Calculator) 0A 92 01 
    Usage (AL Local Machine Browser) 0A 94 01 
    Usage (Play/Pause) 09 CD 
    Usage (Stop) 09 B7 
    Usage (Scan Previous Track) 09 B6 
    Usage (Scan Next Track) 09 B5 
    Usage (Mute) 09 E2 
    Usage (Volume Decrement) 09 EA 
    Usage (Volume Increment) 09 E9 
    Usage (AC Search) 0A 21 02 
    Usage (AC Home) 0A 23 02 
    Usage (AC Back) 0A 24 02 
    Usage (AC Forward) 0A 25 02 
    Usage (AC Stop) 0A 26 02 
    Usage (AC Refresh) 0A 27 02 
    Usage (AC Bookmarks) 0A 2A 02 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (14) 75 0E 
    Input (Cnst,Ary,Abs) 81 01 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Report ID (4) 85 04 
    Usage Page (Keyboard/Keypad) 05 07 
    Report Count (1) 95 01 
    Report Size (8) 75 08 
    Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03 
    Report Count (232) 95 E8 
    Report Size (1) 75 01 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Offline belch85`

  • Posts: 1
  • Location: Melbin
Re: USB to USB keyboard converter
« Reply #524 on: Fri, 06 September 2019, 01:09:19 »
Forgive me if this has been covered, I can't find any solutions elsewhere.

I bought one of these https://amzn.to/2zSpdF5 and a HASU USB > USB Converter, and have been learning basic re-mapping via the TMK Keymap Editor GUI, loading the hex file with FLIP - loving it!

BUT notice the 4x silver buttons to the left of that keyboard?  The bottom two send "b" and "m" which are easily re-mapped using the editor, but the top two are "programmable" keys.  The keyboard doesn't require any software for this macro function - the M1 key for example can be programmed by pressing Fn + M1 to start recording, then a key (or combination), then Fn + M1 to stop recording.

That functionality works with the keyboard plugged directly into PC, but as soon as I put the HASU in between, those keys are completely dead.  I've tried re-recording the macro with simple ASCII keys.

I confirmed that the keyboard doesn't lose the macro when unplugged (to put the HASU in) by leaving it unplugged for over an hour, once plugged back into the PC it remembers what key was recorded.

I tried using the The HID Listen Program debug console (with the keyboard plugged into the HASU) to see what HASU is receiving when I press the M1 key - nothing at all for the M1 key in the log, all others work.

I found some comments about EXTRAKEY_ENABLE in other forums - not sure if that's related, and I'm also not compiling my own so that's a big leap away from where I'm at.

Any clues?

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #525 on: Sat, 07 September 2019, 20:06:47 »
Hi,
First, I believe EXTRAKEY_ENABLE is not related.
If you don't see anything on hid_listen when pressing M1, the keyboard may use its own unusual method for the key.

Can you sheare USB descriptors of the keyboard?
https://github.com/tmk/tmk_keyboard/wiki/USB-Descriptor



Forgive me if this has been covered, I can't find any solutions elsewhere.

I bought one of these https://amzn.to/2zSpdF5 and a HASU USB > USB Converter, and have been learning basic re-mapping via the TMK Keymap Editor GUI, loading the hex file with FLIP - loving it!

BUT notice the 4x silver buttons to the left of that keyboard?  The bottom two send "b" and "m" which are easily re-mapped using the editor, but the top two are "programmable" keys.  The keyboard doesn't require any software for this macro function - the M1 key for example can be programmed by pressing Fn + M1 to start recording, then a key (or combination), then Fn + M1 to stop recording.

That functionality works with the keyboard plugged directly into PC, but as soon as I put the HASU in between, those keys are completely dead.  I've tried re-recording the macro with simple ASCII keys.

I confirmed that the keyboard doesn't lose the macro when unplugged (to put the HASU in) by leaving it unplugged for over an hour, once plugged back into the PC it remembers what key was recorded.

I tried using the The HID Listen Program debug console (with the keyboard plugged into the HASU) to see what HASU is receiving when I press the M1 key - nothing at all for the M1 key in the log, all others work.

I found some comments about EXTRAKEY_ENABLE in other forums - not sure if that's related, and I'm also not compiling my own so that's a big leap away from where I'm at.

Any clues?


Offline JohnRMA

  • Posts: 5
Re: USB to USB keyboard converter
« Reply #526 on: Fri, 13 September 2019, 10:36:38 »
Hello.

 I am working on an exhibit that needs to have a wireless keyboard for users/an employee to enter names/scores, as well as another keyboard for maintenance/troubleshooting. The user keyboard needs to only have the letter/number keys and backspace/space/enter enabled, and other keys like the windows key/ctrl/alt/media keys/etc... and key combinations disabled.

 The wireless keyboard that is currently picked is https://www.amazon.ca/IOGEAR-GKB635W-Wireless-Smart-Keyboard/dp/B07934KKTS . It also has trackball/scroll wheel built in, but disabling that isn't as important.

 Would the USB to USB converter plugged into the Keyboard dongle be expected to work in this case?

 Thank you.

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #527 on: Fri, 13 September 2019, 19:11:00 »
I think keyboard part works with the converter and you can disable the keys in keymap.

Hello.

 I am working on an exhibit that needs to have a wireless keyboard for users/an employee to enter names/scores, as well as another keyboard for maintenance/troubleshooting. The user keyboard needs to only have the letter/number keys and backspace/space/enter enabled, and other keys like the windows key/ctrl/alt/media keys/etc... and key combinations disabled.

 The wireless keyboard that is currently picked is https://www.amazon.ca/IOGEAR-GKB635W-Wireless-Smart-Keyboard/dp/B07934KKTS . It also has trackball/scroll wheel built in, but disabling that isn't as important.

 Would the USB to USB converter plugged into the Keyboard dongle be expected to work in this case?

 Thank you.


Offline JohnRMA

  • Posts: 5
Re: USB to USB keyboard converter
« Reply #528 on: Mon, 16 September 2019, 08:52:05 »
 Thanks for the reply. The keyboard shows up as both a keyboard and a mouse in the device manager, if it is plugged in through the USB-USB Converter, will it still show up like that? Or will the trackball not work?

Offline Microdoted

  • Posts: 5
  • Location: Houston, TX
  • UpgradeKeyboards.com
    • Upgrade Keyboards
Re: USB to USB keyboard converter
« Reply #529 on: Tue, 17 September 2019, 03:19:23 »
question/issue issue im hoping someone can help me with. and i apologize beforehand, as im sure this has been asked/answered, but after 2 days of searching i gave up and decided to ask.

i have a windows workstation with an ikbc mf108 (108key ansi) and picked up one of your usb to usb convertors (didnt want to try dealing with making my own). what is the proper way to deal with the 4 media keys above numpad? should i include them in a keymap? ignore them and just use the standard ansi layout? i understand that i will most likely not be able to have the converter see them as per your first post, but im not getting any keypress passed through to the system when using it no matter what keymap i use. (all work fine when not using the adaptor though). they are sending in volume_up, volume_down, etc which should pass through the adaptor, but isnt.

if someone can point me in the right direction to figure this out, i would be extremely grateful!

tried both of these so far (everything else works exactly as inteded with the exception of those 4 keys):
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   
  • = LAYOUT_all(KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_ESC, MY_QUICKTEXT, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MY_SCREENSHOT, KC_SLCK, KC_PAUS, KC_MEDIA_PLAY_PAUSE, KC_MEDIA_PREV_TRACK, KC_MEDIA_NEXT_TRACK, KC_CALCULATOR, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_NO, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_NO, KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, KC_NO, KC_NO, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_NO, KC_NO, KC_NO, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_NO, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_NO, KC_NO, KC_NO, KC_LALT, KC_LGUI, KC_LCTL, KC_NO, KC_NO, KC_SPC, KC_NO, KC_NO, KC_NO, KC_RCTL, KC_RGUI, KC_APP, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT, KC_NO, KC_NO)

};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   
  • = LAYOUT_ansi(KC_ESC, MY_QUICKTEXT, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, MY_SCREENSHOT, KC_SLCK, KC_PAUS, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_LALT, KC_LGUI, KC_LCTL, KC_SPC, KC_RCTL, KC_RGUI, KC_APP, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT)
« Last Edit: Tue, 17 September 2019, 03:30:46 by Microdoted »

Offline Microdoted

  • Posts: 5
  • Location: Houston, TX
  • UpgradeKeyboards.com
    • Upgrade Keyboards
Re: USB to USB keyboard converter
« Reply #530 on: Wed, 18 September 2019, 02:26:22 »
ive done another day of troublshooting (and learning)... finally got debug working, and am getting this in the terminal for those media keys:

input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00
input 1:  00 00 00 00 00 00 00 00
state:  00 00 00 00 00 00 00 00


Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #531 on: Tue, 24 September 2019, 01:28:34 »
Default frmware doesn't recognize any media key and doesn't pass through any key which not recognized.
Media keys usually are sent out of different endpoint from one for normal keys. You have to define custom parser code to interpret intput from the media key endpoint. The code is specific to the keyboard and you can know how the media key should be interpreted by reading USB HID report descriptor of it.

See this for how to get descriptor and search on the net.
https://github.com/tmk/tmk_keyboard/wiki/HID-Report-Descriptor

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #532 on: Wed, 25 September 2019, 01:37:07 »
Vortex Tab 90M works

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #533 on: Wed, 25 September 2019, 03:46:20 »
Thanks for your report, Harima.
Updated compatibility list in the first post.

Offline JohnRMA

  • Posts: 5
Re: USB to USB keyboard converter
« Reply #534 on: Wed, 25 September 2019, 11:37:53 »
I've tried using this keyboard  https://www.amazon.ca/IOGEAR-GKB635W-Wireless-Smart-Keyboard/dp/B07934KKTS with the USB converter, however it doesn't seem to work.

I updated the firmware from http://www.tmk-kbd.com/tmk_keyboard/editor/unimap/?usb_usb with Flip, and the converter itself shows up in the device manager. But no key strokes on the keyboard go through to the pc. It does work with other wired USB Keyboards we have.

 This is the descriptor from the non-working keyboard.

Code: [Select]
Information for device Smart Control (VID=0x1357 PID=0x1000):

Connection Information:
------------------------------
Device current bus speed: FullSpeed
Device supports USB 1.1 specification
Device supports USB 2.0 specification
Device address: 0x001F
Current configuration value: 0x01
Number of open pipes: 3

Device Descriptor:
------------------------------
0x12 bLength
0x01 bDescriptorType
0x0110 bcdUSB
0x00 bDeviceClass     
0x00 bDeviceSubClass   
0x00 bDeviceProtocol   
0x20 bMaxPacketSize0   (32 bytes)
0x1357 idVendor
0x1000 idProduct
0x0100 bcdDevice
0x01 iManufacturer   "HL 0000 00 00 00 01"
0x02 iProduct   "Smart Control"
0x00 iSerialNumber
0x01 bNumConfigurations

Configuration Descriptor:
------------------------------
0x09 bLength
0x02 bDescriptorType
0x0054 wTotalLength   (84 bytes)
0x03 bNumInterfaces
0x01 bConfigurationValue
0x00 iConfiguration
0xA0 bmAttributes   (Bus-powered Device, Remote-Wakeup)
0x64 bMaxPower      (200 mA)

Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x00 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass      (Human Interface Device Class)
0x00 bInterfaceSubClass   
0x01 bInterfaceProtocol   
0x00 iInterface

HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0101 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType   (Report descriptor)
0x0041 bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x81 bEndpointAddress  (IN endpoint 1)
0x03 bmAttributes      (Transfer: Interrupt / Synch: None / Usage: Data)
0x0020 wMaxPacketSize    (1 x 32 bytes)
0x08 bInterval         (8 frames)

Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x01 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass      (Human Interface Device Class)
0x00 bInterfaceSubClass   
0x02 bInterfaceProtocol   
0x00 iInterface

HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0101 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType   (Report descriptor)
0x0071 bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x82 bEndpointAddress  (IN endpoint 2)
0x03 bmAttributes      (Transfer: Interrupt / Synch: None / Usage: Data)
0x0020 wMaxPacketSize    (1 x 32 bytes)
0x08 bInterval         (8 frames)

Interface Descriptor:
------------------------------
0x09 bLength
0x04 bDescriptorType
0x02 bInterfaceNumber
0x00 bAlternateSetting
0x01 bNumEndPoints
0x03 bInterfaceClass      (Human Interface Device Class)
0x00 bInterfaceSubClass   
0x00 bInterfaceProtocol   
0x00 iInterface

HID Descriptor:
------------------------------
0x09 bLength
0x21 bDescriptorType
0x0101 bcdHID
0x00 bCountryCode
0x01 bNumDescriptors
0x22 bDescriptorType   (Report descriptor)
0x0044 bDescriptorLength

Endpoint Descriptor:
------------------------------
0x07 bLength
0x05 bDescriptorType
0x83 bEndpointAddress  (IN endpoint 3)
0x03 bmAttributes      (Transfer: Interrupt / Synch: None / Usage: Data)
0x0020 wMaxPacketSize    (1 x 32 bytes)
0x08 bInterval         (8 frames)

Microsoft OS Descriptor is not available. Error code: 0x0000001F

String Descriptor Table
--------------------------------
Index  LANGID  String
0x00   0x0000  0x0409
0x01   0x0409  "HL 0000 00 00 00 01"
0x02   0x0409  "Smart Control"

------------------------------

Connection path for device:
USB xHCI Compliant Host Controller
Root Hub
Generic USB Hub
Smart Control (VID=0x1357 PID=0x1000) Port: 4

Running on: Windows 10 or greater (Build Version 18362)

Brought to you by TDD v2.12.0, Aug  2 2019, 16:35:05

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #535 on: Wed, 25 September 2019, 18:48:09 »
JohnRMA, Thanks for the descriptor. I'll update the first post.

The keyboard seems to support only NKRO mode without boot mode(6KRO), it will always send keys in NKRO report that the converter can't recognize. This is the first time I have ever seen keyboard like that iirc.
I think it has problem with some of legacy BIOS and UEFI or it may use some unclear trick for those purpose.

Could you check whether it can work with UEFI/BIOS?

Offline JohnRMA

  • Posts: 5
Re: USB to USB keyboard converter
« Reply #536 on: Thu, 26 September 2019, 13:37:01 »
Thanks for the response. The keyboard works on the UEFI of my PC, but as you expected, it does not work in the BIOS of another, older PC. 
 I will look into getting a different keyboard. In your experience, most wireless keyboards do work?

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #537 on: Thu, 26 September 2019, 19:44:56 »
Thanks for testing.
I'm surprised by the fact that there is keyboard that doesn't support boot mode in the market and the manufacturer decided on dropping backward compatibility for legacy systems. And modern UEFI supports NKRO keyboard natively. Really good to know.

I don't have any experience with wireless keyboards but user reported Logitech Unifying keyboard worked with the coverter once.
https://geekhack.org/index.php?topic=69169.msg2682579#msg2682579


Thanks for the response. The keyboard works on the UEFI of my PC, but as you expected, it does not work in the BIOS of another, older PC. 
 I will look into getting a different keyboard. In your experience, most wireless keyboards do work?


Offline JohnRMA

  • Posts: 5
Re: USB to USB keyboard converter
« Reply #538 on: Tue, 01 October 2019, 12:59:27 »
 Ok, we tested it with a Logitech K330 and K360 (both with unifying receiver) and they both worked fine. So we'll use one of them. Thanks for all your help.

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #539 on: Tue, 01 October 2019, 16:46:54 »
Thanks for the testing. Updated the list in the first post.

Ok, we tested it with a Logitech K330 and K360 (both with unifying receiver) and they both worked fine. So we'll use one of them. Thanks for all your help.


Offline jaux

  • Posts: 4
Re: USB to USB keyboard converter
« Reply #540 on: Wed, 09 October 2019, 11:55:50 »
Just got my GMK Uniqey C70 today and I'm very happy to report that it works well with the converter  :thumb:

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #541 on: Wed, 09 October 2019, 18:47:17 »
Updated the list, thanks!

Just got my GMK Uniqey C70 today and I'm very happy to report that it works well with the converter  :thumb:


Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #542 on: Mon, 14 October 2019, 03:12:01 »
Hasu, what do you use for the plastic casing around the converter? I'm interested in doing the same thing to a teensy.

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #543 on: Mon, 14 October 2019, 03:41:22 »
I'm not sure about what you are asking but guessing you are talking about CAD software?
As first post says, the case was designed by Gouty not me, I didn't try it yet and know little. He used Autodesk Fusion 360 according to README. https://github.com/tmk/USB2USB_Converter/tree/master/3D%20Printed%20Case

I didn't try any plastic casing for the covnerter yet, except for heat shrink wrap.


.... Ah, wait ... You are referring the heat-shrink tube perhaps? If so I use transparent Sumitube A20C for this.


Hasu, what do you use for the plastic casing around the converter? I'm interested in doing the same thing to a teensy.

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #544 on: Mon, 14 October 2019, 14:00:43 »
I didn't try any plastic casing for the covnerter yet, except for heat shrink wrap.


.... Ah, wait ... You are referring the heat-shrink tube perhaps? If so I use transparent Sumitube A20C for this.


Hasu, what do you use for the plastic casing around the converter? I'm interested in doing the same thing to a teensy.

This is it. Thanks!

Offline riangle

  • Posts: 3
  • Location: Canada
Re: USB to USB keyboard converter
« Reply #545 on: Tue, 12 November 2019, 15:31:04 »
Before I buy a controller I have a few questions:

Will this work on the newer Realforce PFU?
When the original post mentions that you cannot program the fn key. I am assuming this means you can still change another key (the win key for example) to have the same function as the Fn key. Is this true?
I recall reading something about media keys not being supported. Is this only applicable to dedicated media keys? What about adding Play/pause/volume to keys on the Fn layer?
Is it possible/difficult to return the board to it's default settings? Is this as simple as unplugging the device?

Thank you for considering tackling my litany of questions. My area of work is not in this field and I am a relative newbie.

Offline hasu

  • Thread Starter
  • Posts: 3471
  • Location: Tokyo, Japan
  • @tmk
    • tmk keyboard firmware project
Re: USB to USB keyboard converter
« Reply #546 on: Tue, 12 November 2019, 17:27:01 »
Before I buy a controller I have a few questions:

Will this work on the newer Realforce PFU?

Some user reported it works with the converter.
I think PFU Realforce R2 is one of variants and identical to Topre R2.

Quote
When the original post mentions that you cannot program the fn key. I am assuming this means you can still change another key (the win key for example) to have the same function as the Fn key. Is this true?
True. You can use Win key to change keymap layers.

Quote
I recall reading something about media keys not being supported. Is this only applicable to dedicated media keys? What about adding Play/pause/volume to keys on the Fn layer?
Yes, you can send those media keys by key remapping on the converter, for example you can assign them with Win+cursor keys.
The converter doesn't recognize(and pass through) the media keys from the keyboard, computer recevies nothing when pressing original Realforce's Fn+cursor keys.

Quote
Is it possible/difficult to return the board to it's default settings? Is this as simple as unplugging the device?
The converter nerver change anything of the keyboard logically and physically, so the keyboard remains default setting when without the converter.

Offline riangle

  • Posts: 3
  • Location: Canada
Re: USB to USB keyboard converter
« Reply #547 on: Tue, 12 November 2019, 18:32:15 »
Thank you for the quick response!

I'll almost certainly being grabbing a converter before Xmas. I'm far too used to old fn layers to do without them if I can help it. Very happy to be able to hold old habits while moving over to topre!

Offline zucca

  • Posts: 16
Re: USB to USB keyboard converter
« Reply #548 on: Fri, 29 November 2019, 15:52:52 »

Offline Harima

  • Posts: 44
Re: USB to USB keyboard converter
« Reply #549 on: Sun, 15 December 2019, 23:42:49 »
Hi hasu,

For this https://smile.amazon.com/iKKEGOL-Control-Customized-Keyboard-Multimedia/dp/B07553KW32/ref=cm_cr_arp_d_product_top?ie=UTF8 footpedal, when I connect it to the converter and check hid listen it always has ctrl pressed

Code: [Select]
Listening:


TMK:229693e6+/LUFA

usb_state: 20

USB configured.

Keyboard start.
usb_state: 40
usb_state: 50
usb_state: 51
host.Task: 2341
usb_state: 90
speed: full
input 1: 01 00 00 04 00 00 00 00 00
state:  01 00 04 00 00 00 00 00
input 1: 01 00 00 00 00 00 00 00 00
state:  01 00 00 00 00 00 00 00
input 1: 01 00 00 05 00 00 00 00 00
state:  01 00 05 00 00 00 00 00
input 1: 01 00 00 00 00 00 00 00 00
state:  01 00 00 00 00 00 00 00

usb lyzer:
Code: [Select]
Connection Status Device connected
Current Configuration 1
Speed Full (12 Mbit/s)
Device Address 30
Number Of Open Pipes 3

Device Descriptor
Offset Field Size Value Description
0 bLength 1 12h 
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0110h USB Spec 1.1
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h 
6 bDeviceProtocol 1 00h 
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 413Dh 
10 idProduct 2 2107h 
12 bcdDevice 2 0000h 0.00
14 iManufacturer 1 00h 
15 iProduct 1 00h 
16 iSerialNumber 1 00h 
17 bNumConfigurations 1 01h 

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 0042h 
4 bNumInterfaces 1 02h 
5 bConfigurationValue 1 01h 
6 iConfiguration 1 00h 
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
 4..0: Reserved  ...00000   
 5: Remote Wakeup  ..1.....  Yes
 6: Self Powered  .0......  No, Bus Powered
 7: Reserved (set to one)
(bus-powered for 1.0)  1.......   
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 01h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0111h 1.11
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0104h 260 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0010h 16 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 2 Endpoints
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h 
3 bAlternateSetting 1 00h 
4 bNumEndpoints 1 02h 
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 02h Mouse
8 iInterface 1 00h 

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h 
1 bDescriptorType 1 21h HID
2 bcdHID 2 0110h 1.10
4 bCountryCode 1 00h 
5 bNumDescriptors 1 01h 
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0029h 41 bytes

Endpoint Descriptor 82 2 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Endpoint Descriptor 02 2 Out, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h 
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 02h 2 Out
3 bmAttributes 1 03h Interrupt
 1..0: Transfer Type  ......11  Interrupt
 7..2: Reserved  000000..   
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01 
Usage (Keyboard) 09 06 
Collection (Application) A1 01 
    Report ID (1) 85 01 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Keyboard Left Control) 19 E0 
    Usage Maximum (Keyboard Right GUI) 29 E7 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Size (1) 75 01 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (8) 75 08 
    Input (Cnst,Ary,Abs) 81 01 
    Report Count (3) 95 03 
    Report Size (1) 75 01 
    Usage Page (LEDs) 05 08 
    Usage Minimum (Num Lock) 19 01 
    Usage Maximum (Scroll Lock) 29 03 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Report Count (5) 95 05 
    Report Size (1) 75 01 
    Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01 
    Report Count (6) 95 06 
    Report Size (8) 75 08 
    Logical Minimum (0) 15 00 
    Logical Maximum (-1) 25 FF 
    Usage Page (Keyboard/Keypad) 05 07 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum 29 FF 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (Mouse) 09 02 
Collection (Application) A1 01 
    Report ID (2) 85 02 
    Usage (Pointer) 09 01 
    Collection (Physical) A1 00 
        Usage Page (Button) 05 09 
        Usage Minimum (Button 1) 19 01 
        Usage Maximum (Button 3) 29 03 
        Logical Minimum (0) 15 00 
        Logical Maximum (1) 25 01 
        Report Count (3) 95 03 
        Report Size (1) 75 01 
        Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
        Report Count (1) 95 01 
        Report Size (5) 75 05 
        Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03 
        Usage Page (Generic Desktop) 05 01 
        Usage (X) 09 30 
        Usage (Y) 09 31 
        Usage (Wheel) 09 38 
        Logical Minimum (-127) 15 81 
        Logical Maximum (127) 25 7F 
        Report Size (8) 75 08 
        Report Count (3) 95 03 
        Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06 
    End Collection C0 
End Collection C0 
Usage Page (Generic Desktop) 05 01 
Usage (Game Pad) 09 05 
Collection (Application) A1 01 
    Report ID (4) 85 04 
    Usage (Pointer) 09 01 
    Collection (Physical) A1 00 
        Usage (X) 09 30 
        Usage (Y) 09 31 
        Logical Minimum (-1) 15 FF 
        Logical Maximum (1) 25 01 
        Report Count (2) 95 02 
        Report Size (2) 75 02 
        Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    End Collection C0 
    Report Count (4) 95 04 
    Report Size (1) 75 01 
    Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03 
    Usage Page (Button) 05 09 
    Usage Minimum (Button 1) 19 01 
    Usage Maximum (Button 8) 29 08 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Count (8) 95 08 
    Report Size (1) 75 01 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
End Collection C0 
Usage Page (Consumer Devices) 05 0C 
Usage (Consumer Control) 09 01 
Collection (Application) A1 01 
    Report ID (3) 85 03 
    Usage (Volume Decrement) 09 EA 
    Usage (Volume Increment) 09 E9 
    Usage (Mute) 09 E2 
    Usage (Play/Pause) 09 CD 
    Usage (Scan Previous Track) 09 B6 
    Usage (Scan Next Track) 09 B5 
    Usage (Stop) 09 B7 
    Usage (AC Home) 0A 23 02 
    Logical Minimum (0) 15 00 
    Logical Maximum (1) 25 01 
    Report Count (8) 95 08 
    Report Size (1) 75 01 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage (AL Local Machine Browser) 0A 94 01 
    Usage (AL Email Reader) 0A 8A 01 
    Usage (AL Calculator) 0A 92 01 
    Usage (AC Search) 0A 21 02 
    Usage (AL Consumer Control Configuration) 0A 83 01 
    Report Count (5) 95 05 
    Report Size (1) 75 01 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage Page (Generic Desktop) 05 01 
    Usage (System Sleep) 09 82 
    Usage (System Power Down) 09 81 
    Report Size (1) 75 01 
    Report Count (2) 95 02 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Report Count (1) 95 01 
    Report Size (1) 75 01 
    Input (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03 
    Usage Page (Consumer Devices) 05 0C 
    Report Count (1) 95 01 
    Report Size (16) 75 10 
    Usage Minimum (Undefined) 19 00 
    Usage Maximum (AC Zoom Out) 2A 2E 02 
    Logical Maximum (558) 26 2E 02 
    Input (Data,Ary,Abs) 81 00 
End Collection C0 

Interface 1 HID Report Descriptor Vendor-Defined 1
Item Tag (Value) Raw Data
Usage Page (Vendor-Defined 1) 06 00 FF 
Usage (Vendor-Defined 1) 09 01 
Collection (Application) A1 01 
    Usage (Vendor-Defined 1) 09 01 
    Logical Minimum (0) 15 00 
    Logical Maximum (255) 26 FF 00 
    Report Size (8) 75 08 
    Report Count (8) 95 08 
    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02 
    Usage (Vendor-Defined 1) 09 01 
    Report Count (8) 95 08 
    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02 
    Usage Page (Consumer Devices) 05 0C 
    Usage (Undefined) 09 00 
    Logical Minimum (-128) 15 80 
    Logical Maximum (127) 25 7F 
    Report Size (8) 75 08 
    Report Count (8) 95 08 
    Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) B1 02 
End Collection C0 

Although there are options to bind a key with a modifier, without a modifier it will always have left ctrl depressed on startup and I cannot press left ctrl.