Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 21:59 06 Jul 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : USB Keyboard - slow response/dropped keypresses

     Page 3 of 3    
Author Message
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2529
Posted: 08:24pm 05 Jul 2025
Copy link to clipboard 
Print this post

I just tried this big kb to see problem but works fine, I just typeing to mmedit and mmcc. not used mouse yet.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10213
Posted: 08:27am 06 Jul 2025
Copy link to clipboard 
Print this post

Amnesie

I'm determined to get to the bottom of this. Please could you run the attached version which has some diagnostic code in it.

Please load the software and then using a computer console type
OPTION CONSOLE SERIAL
This disables the screen as a console device

Then using the USB keyboard type the sequence that gives the duplicated characters until you see a sequence which includes a duplicate

In the computer console you will see the characters you typed. On the VGA screen you will see some hex codes which are the report sent by the keyboard.

On my USB keyboard, I only ever see duplication of the "H" character and when it is duplicated I get the nonsense code A010101010101 on the screen and it is this which causes the duplication.

Google does not suggest this is a generic error code but it is definitely the keyboard that is generating it.

If your keyboards are doing the same or something similar I can then finally fix the problem. I've disabled the duplicated key timer as this is just masking the problem rather than fixing it.

Thanks for your help

Peter

For reference these are the codes that the keys on a German keyboard should produce.
When typing slowly you will see the code as the right most pair of hex digits. If you press two keys simultaneously you will see both codes in the 4 right digits.

onst int DEkeyValue[202] = {
0,0,//    USB_HID_KEYBOARD_KEYPAD_RESERVED_NO_EVENT_INDICATED                      = 0x00,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_ERROR_ROLL_OVER                         = 0x01,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_POST_FAIL                               = 0x02,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_ERROR_UNDEFINED                         = 0x03,
97,65,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_A                                       = 0x04,
98,66,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_B                                       = 0x05,
99,67,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_C                                       = 0x06,
100,68,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_D                                       = 0x07,
101,69,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_E                                       = 0x08,
102,70,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F                                       = 0x09,
103,71,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_G                                       = 0x0A,
104,72,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_H                                       = 0x0B,
105,73,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_I                                       = 0x0C,
106,74,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_J                                       = 0x0D,
107,75,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_K                                       = 0x0E,
108,76,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_L                                       = 0x0F,
109,77,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_M                                       = 0x10,
110,78,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_N                                       = 0x11,
111,79,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_O                                       = 0x12,
112,80,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_P                                       = 0x13,
113,81,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_Q                                       = 0x14,
114,82,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_R                                       = 0x15,
115,83,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_S                                       = 0x16,
116,84,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_T                                       = 0x17,
117,85,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_U                                       = 0x18,
118,86,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_V                                       = 0x19,
119,87,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_W                                       = 0x1A,
120,88,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_X                                       = 0x1B,
122,90,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_Y                                       = 0x1C,
121,89,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_Z                                       = 0x1D,
49,33,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_1_AND_EXCLAMATION_POINT                 = 0x1E,
50,34,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_2_AND_AT                                = 0x1F,
51,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_3_AND_HASH                              = 0x20,      DE: §=245
52,36,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_4_AND_DOLLAR                            = 0x21,
53,37,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_5_AND_PERCENT                           = 0x22,
54,38,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_6_AND_CARROT                            = 0x23,
55,47,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_7_AND_AMPERSAND                         = 0x24,
56,40,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_8_AND_ASTERISK                          = 0x25,
57,41,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_9_AND_OPEN_PARENTHESIS                  = 0x26,
48,61,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_0_AND_CLOSE_PARENTHESIS                 = 0x27,
10,10,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_RETURN_ENTER                            = 0x28,
27,27,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_ESCAPE                                  = 0x29,
8,8,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_DELETE                                  = 0x2A,
9,0x9f,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_TAB                                     = 0x2B,
32,32,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_SPACEBAR                                = 0x2C,
0,63,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_MINUS_AND_UNDERSCORE                    = 0x2D,        DE: ß=225
0,96,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_EQUAL_AND_PLUS                          = 0x2E,   DE: ´=239
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_OPEN_BRACKET_AND_OPEN_CURLY_BRACE       = 0x2F,         DE: ü=129,Ü=154
43,42,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_CLOSE_BRACKET_AND_CLOSE_CURLY_BRACE     = 0x30,
35,39,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_BACK_SLASH_AND_PIPE                     = 0x31,
35,39,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_NON_US_HASH_AND_TILDE                   = 0x32,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_SEMICOLON_AND_COLON                     = 0x33,   DE: ö=228,Ö=229
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_APOSTROPHE_AND_QUOTE                    = 0x34,   DE: ä=132,Ä=142
94,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_GRAVE_ACCENT_AND_TILDE                  = 0x35,   DE: °=167
44,59,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_COMMA_AND_LESS_THAN                     = 0x36,
46,58,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_PERIOD_AND_GREATER_THAN                 = 0x37,
45,95,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_FORWARD_SLASH_AND_QUESTION_MARK         = 0x38,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_CAPS_LOCK                               = 0x39,
0x91,0xB1,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F1                                = 0x3A,
0x92,0xB2,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F2                                = 0x3B,
0x93,0xB3,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F3                                = 0x3C,
0x94,0xB4,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F4                                = 0x3D,
0x95,0xB5,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F5                                = 0x3E,
0x96,0xB6,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F6                                = 0x3F,
0x97,0xB7,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F7                                = 0x40,
0x98,0xB8,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F8                                = 0x41,
0x99,0xB9,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F9                                = 0x42,
0x9a,0xBa,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F10                               = 0x43,
0x9b,0xBb,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F11                               = 0x44,
0x9c,0xBc,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_F12                               = 0x45,
0x9d,0xBd,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_PRINT_SCREEN                      = 0x46,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_SCROLL_LOCK                             = 0x47,
0x9e,0x9e,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_PAUSE                                   = 0x48,
0x84,0x84,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_INSERT                                  = 0x49,
0x86,0x86,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_HOME                                    = 0x4A,
0x88,0x88,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_PAGE_UP                                 = 0x4B,
0x7f,0xa0,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_DELETE_FORWARD                          = 0x4C,
0x87,0x87,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_END                                     = 0x4D,
0x89,0x89,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_PAGE_DOWN                               = 0x4E,
0x83,0xA3,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_RIGHT_ARROW                             = 0x4F,
0x82,0x82,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_LEFT_ARROW                              = 0x50,
0x81,0xA1,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_DOWN_ARROW                              = 0x51,
0x80,0x80,//    USB_HID_KEYBOARD_KEYPAD_KEYBOARD_UP_ARROW                                = 0x52,
0,0,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_NUM_LOCK_AND_CLEAR                        = 0x53,
47,47,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_BACK_SLASH                                = 0x54,
42,42,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_ASTERISK                                  = 0x55,
45,45,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_MINUS                                     = 0x56,
43,43,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_PLUS                                      = 0x57,
10,10,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_ENTER                                     = 0x58,
49,0x87,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_1_AND_END                                 = 0x59,
50,0x81,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_2_AND_DOWN_ARROW                          = 0x5A,
51,0x89,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_3_AND_PAGE_DOWN                           = 0x5B,
52,0x82,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_4_AND_LEFT_ARROW                          = 0x5C,
53,53,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_5                                         = 0x5D,
54,0x83,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_6_AND_RIGHT_ARROW                         = 0x5E,
55,0x86,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_7_AND_HOME                                = 0x5F,
56,0x80,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_8_AND_UP_ARROW                            = 0x60,
57,0x88,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_9_AND_PAGE_UP                             = 0x61,
48,0x84,//    USB_HID_KEYBOARD_KEYPAD_KEYPAD_0_AND_INSERT                              = 0x62,
46,0x7f,    //USB_HID_KEYBOARD_KEYPAD_KEYPAD_PERIOD_AND_DELETE                         = 0x63,
60,62    //USB_HID_KEYBOARD_KEYPAD_KEYBOARD_NON_US_FORWARD_SLASH_AND_PIPE           = 0x64,
};
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 606
Posted: 10:19am 06 Jul 2025
Copy link to clipboard 
Print this post

  matherp said  Amnesie

(...) Please could you run the attached version which has some diagnostic code in it.



Hi Peter, of course I'll do my best to help!

But there is no attached file. Do you forgot to attach it?

Greetings
Daniel
Edited 2025-07-06 20:20 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10213
Posted: 10:21am 06 Jul 2025
Copy link to clipboard 
Print this post

Oops


PicoMite.zip
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 606
Posted: 11:18am 06 Jul 2025
Copy link to clipboard 
Print this post

I have no idea why, but I wasn't able to get serial console to work. If I type:
"option console serial" it only works so long if I'm not hitting the ENTER key.

Also right now it seems, that I am to stupid to get my FTDI connector to work (console output on GP8 & GP9) ... maybe this is just me, or is this somehow disable in this version of the firmware? It should be on by default with the USB version. Naaah whaterever, I have a sucess in replicating your "A010101010101" anyways.

I know that this gives me dublicates with the "F"

SDFG

So I pressed those keys and see for yourself (last block of "code"):




So maybe this is enough for you to verify. You said you have dublicate "h" and this code:  A010101010101

I have dublicate "f" and get also the same code!
Edited 2025-07-06 21:20 by Amnesie
 
pointy56
Newbie

Joined: 31/05/2025
Location: United Kingdom
Posts: 1
Posted: 11:35am 06 Jul 2025
Copy link to clipboard 
Print this post

I've been following this thread with interest.
I think that the spurious A010101010101 is reporting  USB_HID_KEYBOARD_KEYPAD_KEYBOARD_ERROR_ROLL_OVER as shown in the earlier table from Peter, although why it is repeated in all 6 key positions is beyond me.

Other than that the key codes being sent seem reasonable for what Daniel is doing.

Martin
Edited 2025-07-06 21:35 by pointy56
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 606
Posted: 11:49am 06 Jul 2025
Copy link to clipboard 
Print this post

Hello Martin,

This is a really complex problem, especially since apparently not everyone is affected. Peter was right from the start about the keyboard-related issue. It seems to be a complicated combination of the following:

- individual keyboard matrix scanning
- polling time

as far as I udnerstand it. But if Peter has success in pinning this problem down to its root, I think he can tell us what the real problem was  

Greetings
Daniel
Edited 2025-07-06 21:51 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10213
Posted: 11:57am 06 Jul 2025
Copy link to clipboard 
Print this post

Please try the attached - I'm hopeful this time
Interestingly my Corsair keyboard NEVER gives this code and never duplicates characters


PicoMite.zip
Edited 2025-07-06 21:58 by matherp
 
     Page 3 of 3    
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025