diff --git a/src/add-ons/kernel/drivers/input/hid_shared/HIDReportItem.h b/src/add-ons/kernel/drivers/input/hid_shared/HIDReportItem.h index 926f6551c0..b77f4be524 100644 --- a/src/add-ons/kernel/drivers/input/hid_shared/HIDReportItem.h +++ b/src/add-ons/kernel/drivers/input/hid_shared/HIDReportItem.h @@ -23,6 +23,7 @@ public: bool Relative() { return fRelative; }; bool Array() { return fArray; }; bool Signed() { return fMinimum > fMaximum; }; + uint32 Minimum() { return fMinimum; } uint16 UsagePage(); uint16 UsageID(); diff --git a/src/add-ons/kernel/drivers/input/hid_shared/KeyboardProtocolHandler.cpp b/src/add-ons/kernel/drivers/input/hid_shared/KeyboardProtocolHandler.cpp index da6619f109..5e7fd41b45 100644 --- a/src/add-ons/kernel/drivers/input/hid_shared/KeyboardProtocolHandler.cpp +++ b/src/add-ons/kernel/drivers/input/hid_shared/KeyboardProtocolHandler.cpp @@ -549,7 +549,7 @@ KeyboardProtocolHandler::_ReadReport(bigtime_t timeout, uint32 *cookie) if (key->Extract() == B_OK && key->Valid()) { // handle both array and bitmap based keyboard reports if (key->Array()) { - fCurrentKeys[i] = key->Data(); + fCurrentKeys[i] = key->Data() - key->Minimum(); } else { if (key->Data() == 1) fCurrentKeys[i] = key->UsageID();