Hi Lars! This is cool feature to have all keys on the keyboard working. I have Logitech K800 wireless USB keyboard, which, together with Logitech M280 USB wireless mouse, are connected to a Logitech Unifying wireless transceiver. Since these two devices are paired with the transceiver with a windows utility, they work in any OS without additional drivers (unlike bluetooth devices, which require a bluetooth stack). So, this setup works just fine in OS/2. I'd like to test your drivers with this keyboard later and see, how it works.
As for the question how keyboard drivers interface with PM, and how scancodes are translated to PM virtual keycodes, I don't know exactly. But what I know that there is kbdbase.sys and ibmkbd.sys. The 1st one seems to be a hardware-independent driver, the second one is a hardware dependent driver. And also, there is usbkbd.sys, which handles USB devices.
For mouse support, it is similar way too. There is mouse.sys (or amouse.sys which is a mouse.sys replacement with extra features), which is a hardware-independent mouse driver with support for some hardware built-in. There are additional hardware-dependent drivers, like pclogic.sys and rodent.sys, which add support for additional hardware. They communicate with mouse.sys via IDC and parse the input events, then inject them into mouse.sys. I think, usbmouse.sys also does the same thing for standard USB mice.
I think, the same way usbkbd.sys should work with kbdbase.sys/ibmkbd.sys, injecting extra input events into them. (maybe, ibmkbd.sys is for PS/2 keyboards, only, but I'm not sure).
For a PM input events queue, there is also pmdd.sys (aka \dev\singleq$, the famous OS/2 PM single input queue). It communicates with mouse.sys and kbdbase.sys via IDC, and it is a source for PM input events. So, it merges the input events from different sources, like mouse, keyboard, touchscreen etc. Where the scancode translation to PM scan codes occurs, I'm not sure, but probably, it occurs in pmdd.sys.