Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc116983 authored by Jeff Brown's avatar Jeff Brown
Browse files

HID usage should take precedence over scan code.

Change-Id: Ibd8988e3dcc0d64f4019ffe491d9789733f9d243
parent 49ccac53
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -103,18 +103,18 @@ status_t KeyLayoutMap::mapKey(int32_t scanCode, int32_t usageCode,
}

const KeyLayoutMap::Key* KeyLayoutMap::getKey(int32_t scanCode, int32_t usageCode) const {
    if (scanCode) {
        ssize_t index = mKeysByScanCode.indexOfKey(scanCode);
        if (index >= 0) {
            return &mKeysByScanCode.valueAt(index);
        }
    }
    if (usageCode) {
        ssize_t index = mKeysByUsageCode.indexOfKey(usageCode);
        if (index >= 0) {
            return &mKeysByUsageCode.valueAt(index);
        }
    }
    if (scanCode) {
        ssize_t index = mKeysByScanCode.indexOfKey(scanCode);
        if (index >= 0) {
            return &mKeysByScanCode.valueAt(index);
        }
    }
    return NULL;
}

+17 −13
Original line number Diff line number Diff line
@@ -480,19 +480,7 @@ private:
            int32_t* outKeycode, uint32_t* outFlags) const {
        Device* device = getDevice(deviceId);
        if (device) {
            const KeyInfo* key = NULL;
            if (scanCode) {
                ssize_t index = device->keysByScanCode.indexOfKey(scanCode);
                if (index >= 0) {
                    key = &device->keysByScanCode.valueAt(index);
                }
            }
            if (!key && usageCode) {
                ssize_t index = device->keysByUsageCode.indexOfKey(usageCode);
                if (index >= 0) {
                    key = &device->keysByUsageCode.valueAt(index);
                }
            }
            const KeyInfo* key = getKey(device, scanCode, usageCode);
            if (key) {
                if (outKeycode) {
                    *outKeycode = key->keyCode;
@@ -506,6 +494,22 @@ private:
        return NAME_NOT_FOUND;
    }

    const KeyInfo* getKey(Device* device, int32_t scanCode, int32_t usageCode) const {
        if (usageCode) {
            ssize_t index = device->keysByUsageCode.indexOfKey(usageCode);
            if (index >= 0) {
                return &device->keysByUsageCode.valueAt(index);
            }
        }
        if (scanCode) {
            ssize_t index = device->keysByScanCode.indexOfKey(scanCode);
            if (index >= 0) {
                return &device->keysByScanCode.valueAt(index);
            }
        }
        return NULL;
    }

    virtual status_t mapAxis(int32_t deviceId, int32_t scanCode,
            AxisInfo* outAxisInfo) const {
        return NAME_NOT_FOUND;