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

Commit bf68a02b authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "HID usage should take precedence over scan code."

parents a3fab1cb cc116983
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;