diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-01-31 21:58:56 +0300 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.cyanogenmod.com> | 2012-01-31 21:58:56 +0300 |
commit | 4d91c2e3a1a9e92bc38f874f9ef07432eddffad8 (patch) | |
tree | fb004f664c83891671e582ab475e642c8e225608 | |
parent | 90a791aef0742386a3d4f3a118b2024aa33ae25e (diff) | |
parent | c3d10684449790e1ba3fab3483d65d2d998627a6 (diff) | |
download | frameworks_base-4d91c2e3a1a9e92bc38f874f9ef07432eddffad8.zip frameworks_base-4d91c2e3a1a9e92bc38f874f9ef07432eddffad8.tar.gz frameworks_base-4d91c2e3a1a9e92bc38f874f9ef07432eddffad8.tar.bz2 |
Merge "Do not rotate keyboard D-Pad events for USB keyboards" into gingerbread
-rw-r--r-- | include/ui/EventHub.h | 10 | ||||
-rw-r--r-- | include/ui/InputReader.h | 5 | ||||
-rw-r--r-- | libs/ui/EventHub.cpp | 12 | ||||
-rw-r--r-- | libs/ui/InputReader.cpp | 12 | ||||
-rw-r--r-- | libs/ui/tests/InputReader_test.cpp | 4 |
5 files changed, 26 insertions, 17 deletions
diff --git a/include/ui/EventHub.h b/include/ui/EventHub.h index 6211e9d..8a1f29b 100644 --- a/include/ui/EventHub.h +++ b/include/ui/EventHub.h @@ -158,7 +158,7 @@ public: virtual String8 getDeviceName(int32_t deviceId) const = 0; - virtual bool getDeviceBluetooth(int32_t deviceId) const = 0; + virtual uint32_t getDeviceBusType(int32_t deviceId) const = 0; virtual status_t getAbsoluteAxisInfo(int32_t deviceId, int axis, RawAbsoluteAxisInfo* outAxisInfo) const = 0; @@ -206,7 +206,7 @@ public: virtual String8 getDeviceName(int32_t deviceId) const; - virtual bool getDeviceBluetooth(int32_t deviceId) const; + virtual uint32_t getDeviceBusType(int32_t deviceId) const; virtual status_t getAbsoluteAxisInfo(int32_t deviceId, int axis, RawAbsoluteAxisInfo* outAxisInfo) const; @@ -249,10 +249,12 @@ private: KeyLayoutMap* layoutMap; String8 keylayoutFilename; int fd; + uint32_t bustype; bool bluetooth; + bool usb; device_t* next; - - device_t(int32_t _id, const char* _path, const char* name, bool _bluetooth); + + device_t(int32_t _id, const char* _path, const char* name, uint32_t bustype); ~device_t(); }; diff --git a/include/ui/InputReader.h b/include/ui/InputReader.h index bc8508b..3f0d102 100644 --- a/include/ui/InputReader.h +++ b/include/ui/InputReader.h @@ -405,7 +405,7 @@ private: class KeyboardInputMapper : public InputMapper { public: KeyboardInputMapper(InputDevice* device, int32_t associatedDisplayId, uint32_t sources, - int32_t keyboardType, bool bluetooth = false); + int32_t keyboardType, uint32_t bustype = 0); virtual ~KeyboardInputMapper(); virtual uint32_t getSources(); @@ -432,7 +432,10 @@ private: int32_t mAssociatedDisplayId; uint32_t mSources; int32_t mKeyboardType; + + uint32_t mBusType; bool mBluetooth; + bool mUSB; struct LockedState { Vector<KeyDown> keyDowns; // keys that are down diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp index e9cd66e..9c78a74 100644 --- a/libs/ui/EventHub.cpp +++ b/libs/ui/EventHub.cpp @@ -95,9 +95,11 @@ static inline const char* toString(bool value) { return value ? "true" : "false"; } -EventHub::device_t::device_t(int32_t _id, const char* _path, const char* name, bool _bluetooth) +EventHub::device_t::device_t(int32_t _id, const char* _path, const char* name, uint32_t _bustype) : id(_id), path(_path), name(name), classes(0) - , keyBitmask(NULL), layoutMap(new KeyLayoutMap()), fd(-1), bluetooth(_bluetooth), next(NULL) { + , keyBitmask(NULL), layoutMap(new KeyLayoutMap()), fd(-1), bustype(_bustype), next(NULL) { + bluetooth = (_bustype == BUS_BLUETOOTH); + usb = (_bustype == BUS_USB); } EventHub::device_t::~device_t() { @@ -140,11 +142,11 @@ String8 EventHub::getDeviceName(int32_t deviceId) const return device->name; } -bool EventHub::getDeviceBluetooth(int32_t deviceId) const +uint32_t EventHub::getDeviceBusType(int32_t deviceId) const { AutoMutex _l(mLock); device_t* device = getDeviceLocked(deviceId); - return device->bluetooth; + return device->bustype; } uint32_t EventHub::getDeviceClasses(int32_t deviceId) const @@ -676,7 +678,7 @@ int EventHub::openDevice(const char *deviceName) { version >> 16, (version >> 8) & 0xff, version & 0xff); #endif - device_t* device = new device_t(devid|mDevicesById[devid].seq, deviceName, name, BUS_BLUETOOTH == id.bustype); + device_t* device = new device_t(devid|mDevicesById[devid].seq, deviceName, name, id.bustype); if (device == NULL) { LOGE("out of memory"); return -1; diff --git a/libs/ui/InputReader.cpp b/libs/ui/InputReader.cpp index 623ba27..7626b15 100644 --- a/libs/ui/InputReader.cpp +++ b/libs/ui/InputReader.cpp @@ -334,8 +334,8 @@ InputDevice* InputReader::createDevice(int32_t deviceId, const String8& name, ui } if (keyboardSources != 0) { - device->addMapper(new KeyboardInputMapper(device, - associatedDisplayId, keyboardSources, keyboardType, mEventHub->getDeviceBluetooth(deviceId))); + device->addMapper(new KeyboardInputMapper(device, associatedDisplayId, keyboardSources, + keyboardType, mEventHub->getDeviceBusType(deviceId))); } // Trackball-like devices. @@ -876,10 +876,12 @@ int32_t SwitchInputMapper::getSwitchState(uint32_t sourceMask, int32_t switchCod // --- KeyboardInputMapper --- KeyboardInputMapper::KeyboardInputMapper(InputDevice* device, int32_t associatedDisplayId, - uint32_t sources, int32_t keyboardType, bool bluetooth) : + uint32_t sources, int32_t keyboardType, uint32_t bustype) : InputMapper(device), mAssociatedDisplayId(associatedDisplayId), mSources(sources), - mKeyboardType(keyboardType), mBluetooth(bluetooth) { + mKeyboardType(keyboardType), mBusType(bustype) { initializeLocked(); + mBluetooth = (mBusType == BUS_BLUETOOTH); + mUSB = (mBusType == BUS_USB); } KeyboardInputMapper::~KeyboardInputMapper() { @@ -968,7 +970,7 @@ void KeyboardInputMapper::processKey(nsecs_t when, bool down, int32_t keyCode, if (down) { // Rotate key codes according to orientation if needed. // Note: getDisplayInfo is non-reentrant so we can continue holding the lock. - if (!mBluetooth && mAssociatedDisplayId >= 0) { + if (!mBluetooth && !mUSB && mAssociatedDisplayId >= 0) { int32_t orientation; if (! getPolicy()->getDisplayInfo(mAssociatedDisplayId, NULL, NULL, & orientation)) { return; diff --git a/libs/ui/tests/InputReader_test.cpp b/libs/ui/tests/InputReader_test.cpp index aec7ba9..abfc157 100644 --- a/libs/ui/tests/InputReader_test.cpp +++ b/libs/ui/tests/InputReader_test.cpp @@ -486,8 +486,8 @@ private: return device ? device->name : String8("unknown"); } - virtual bool getDeviceBluetooth(int32_t deviceId) const { - return false; + virtual uint32_t getDeviceBusType(int32_t deviceId) const { + return 0; } virtual status_t getAbsoluteAxisInfo(int32_t deviceId, int axis, |