@@ -40,7 +40,7 @@ template <uint8_t REPORT_ID = 0, std::size_t ROLLOVER_LIMIT = 6>
4040}
4141
4242template <std::uint8_t REPORT_ID = 0 , std::size_t ROLLOVER_LIMIT = 6 >
43- struct keys_input_report : public hid ::report::base<hid::report::type::INPUT, REPORT_ID>
43+ struct keys_input_report : hid::report::base<hid::report::type::INPUT, REPORT_ID>
4444{
4545 hid::report_bitset<page::keyboard_keypad, page::keyboard_keypad::KEYBOARD_LEFT_CONTROL,
4646 page::keyboard_keypad::KEYBOARD_RIGHT_GUI>
@@ -74,6 +74,18 @@ struct keys_input_report : public hid::report::base<hid::report::type::INPUT, RE
7474 }
7575 return false ;
7676 }
77+
78+ static constexpr boot::mode boot_mode ()
79+ requires((REPORT_ID == 0 ) and (ROLLOVER_LIMIT == 6 ))
80+ {
81+ return boot::mode::KEYBOARD;
82+ }
83+ };
84+
85+ // Boot protocol has predefined report layout
86+ struct boot_input_report final : keys_input_report<0 , 6 >
87+ {
88+ using keys_input_report::keys_input_report;
7789};
7890
7991template <uint8_t REPORT_ID>
@@ -97,9 +109,21 @@ template <uint8_t REPORT_ID>
97109}
98110
99111template <uint8_t REPORT_ID = 0 >
100- struct output_report : public hid ::report::base<hid::report::type::OUTPUT, REPORT_ID>
112+ struct output_report : hid::report::base<hid::report::type::OUTPUT, REPORT_ID>
101113{
102114 hid::report_bitset<page::leds, page::leds::NUM_LOCK, page::leds::KANA> leds;
115+
116+ static constexpr boot::mode boot_mode ()
117+ requires(REPORT_ID == 0 )
118+ {
119+ return boot::mode::KEYBOARD;
120+ }
121+ };
122+
123+ // Boot protocol has predefined report layout
124+ struct boot_output_report final : output_report<0 >
125+ {
126+ using output_report::output_report;
103127};
104128
105129template <uint8_t REPORT_ID = 0 >
0 commit comments