Quest had an existing Versakey keyboard using old IBM PC keyboard interface. My task was to produce a USB keyboard with the same key stroke programming ability. At the time USB was only just becoming available on microcontrollers. In addition to the keyboard firmware I had to learn USB protocol and test the keyboard design and USB implementation. This design is still being sold today.
Operation is simple press the dedicated “learn” key then an application key, press the keys you want to assign to the application key, press learn to finish. When the application key is pressed the recorded keys are typed in. Great for opening an application, typing in addresses, names and phone numbers. The design consisted of a single AVR microchip performing key scanning and USB keyboard HID protocol handling.