Set_Protocol Request

"Device Class Definition for Human Interface Devices (HID) version 1.11"のp.63に以下の記述がある。

Boot Keyboards must support the boot protocol and the Set_Protocol request. Boot Keyboards may support an alternative protocol (specified in the Report descriptor) for use in USB-aware operating environments.

これを読む限りSet_Protocol Requestをキーボードに対して送信すればBoot Protocol以外のProtocolでキーボードとやり取りできる模様。ただ,大抵のキーボードはalternative protocolもBoot Protocolと同じだと思われる。OS側が起動時,または起動後にSet_Protocol Requestを送信しているかは未調査。

キーボードの同時押しについて - forPCActionGamer Wiki*によると10キー同時押しのUSBキーボードもある。これらはBoot Protocolではないのをサポートしているのかもしれないが,Boot Protocolに余分なデータがくっついているだけなのかもしれない。というのも,Boot Protocolの用件に以下の記述があり,最初の8bytesさえ規定のものであれば後ろにデータを追加しても問題ないので。

Devices may append additional data to these boot reports, but the first 8 bytes of keyboard reports and the first 3 bytes of mouse reports must conform to the format defined by the Boot Report descriptor in order for the data to be correctly interpreted by the BIOS. The report may not exceed 8 bytes in length. The BIOS will ignore any extensions to reports.

10キー同時押しなら,キーボードからホストに送信するキーコードの数を10個にするだけで良いはず。キーコードは最後に送信されるのでこのように変更してもBoot Protocol上は問題ない。OSがちゃんとReport Descriptorを解釈するなら,これで10キー同時押しは可能と思われる。