Kernel: Handle array usages for consumer page

Also map consumer page mute button in variable case
This commit is contained in:
2026-08-22 11:57:19 +03:00
parent 51badd75f0
commit 9967878886
+31 -4
View File
@@ -105,13 +105,35 @@ namespace Kernel
{
ASSERT(m_keyboard_lock.current_processor_has_lock());
if (usage_page != 0x07)
switch (usage_page)
{
dprintln_if(DEBUG_USB_KEYBOARD, "Unsupported keyboard usage page {2H}", usage_page);
return;
}
case 0x07:
if (usage >= 4 && usage < m_keyboard_state_temp.size())
m_keyboard_state_temp[usage] = true;
break;
case 0x0C:
switch (usage)
{
case 0x00:
break;
case 0xE2:
m_keyboard_state_temp[0x7F] = true;
break;
case 0xE9:
m_keyboard_state_temp[0x80] = true;
break;
case 0xEA:
m_keyboard_state_temp[0x81] = true;
break;
default:
dprintln_if(DEBUG_USB_KEYBOARD, "Unsupported consumer page usage {2H}", usage);
break;
}
break;
default:
dprintln_if(DEBUG_USB_KEYBOARD, "Unsupported keyboard usage page {2H}", usage_page);
break;
}
}
void USBKeyboard::handle_variable(uint16_t usage_page, uint16_t usage, int64_t state)
@@ -140,6 +162,11 @@ namespace Kernel
case 0x0C:
switch (usage)
{
case 0x00:
break;
case 0xE2:
m_keyboard_state_temp[0x7F] = true;
break;
case 0xE9:
m_keyboard_state_temp[0x80] = true;
break;