HID Keyboard Question

Build a small device to send keyboard codes using Pro Micro and although it doesn’t show up when I list USB devices (lsusb) it works, that is, when I send a key it prints. Do I need to set up descriptor or something else before the computer recognises it?

Mike

I have little knowledge of USB…

If the pro micro is configured as a keyboard, it shouldn’t need any special drivers. Look at https://www.sparkfun.com/tutorials/337 for an example of using a pro micro as a usb keyboard.

/mike

Many thank for your reply, much appreciated.

I did a bad job framing my question. I don’t have any issues getting example code to work, for example, I set up my board generates a delete keypress [Keyboard.press(0xD4);] when I press a given button. I then restarted my PC and press the button to see if it would enter the bios and it did …

The problem is, it’s not working on my HP (thin client with full USB support), but other normal USB keyboards do, so I was wondering, what’s the difference between a real USB keyboard and a HID keyboard device?

Mike

Hi Mike.

A real USB keyboard is a USB HID device. HID just means “[Human Interface Device” and that’s a class of USB connected devices that take input from a human. (Keyboard, mouse, joy stick, etc.)

I’m not sure why your HP device isn’t accepting input from your Pro Micro. When the Keyboard library is installed on it, it essentially becomes a USB keyboard and your computer shouldn’t know any difference. It’s possible your device is querying some sort of information from the Pro Micro and it’s not been programmed to send a response and that might be whats causing your issue. (Maybe it’s asking for the status of the num lock/scroll lock/caps lock keys and ignoring the device if it’s not responding?)

There may be some sort of setting in BIOS that you need to fiddle with to get it recognized. See if there’s anything in BIOS about legacy USB keyboard or something to that effect and try the different settings to see what works. BIOS can be a bit more picky about USB devices than an operating system since it has a limited amount of memory to work with and may not be aware of devices that don’t behave exactly as expected.](USB human interface device class - Wikipedia)

Pretty much the answer I was hoping for… thought I was loosing it because your explanation was my understanding as well.

Going to try with a few more machines, some old and some not so old and I expect it will work with the majority, if it does I can look further into USB and see if I can find what it is looking for…

Many thanks Chris, that’s a big help to me, beginning to think I was loosing what little memory I still had left…

Mike