From 4e9279fb877cc83712b11754928d21b11191e600 Mon Sep 17 00:00:00 2001 From: Ingo Ruhnke <grumbel@gmx.de> Date: Sat, 29 Jan 2011 20:10:51 +0100 Subject: [PATCH] Fixed --no-extra-devices --- src/linux_uinput.cpp | 4 ++++ src/linux_uinput.hpp | 2 +- src/ui_event.cpp | 49 +++++++++++++++++++++++++------------------- src/ui_event.hpp | 9 ++++---- src/uinput.cpp | 5 +++-- 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/src/linux_uinput.cpp b/src/linux_uinput.cpp index 0ae5fe6..4a96442 100644 --- a/src/linux_uinput.cpp +++ b/src/linux_uinput.cpp @@ -193,6 +193,10 @@ LinuxUinput::finish() // nothing to be done break; + case kKeyboardDevice: + // FIXME: do something clever + break; + case kMouseDevice: add_rel(REL_X); add_rel(REL_Y); diff --git a/src/linux_uinput.hpp b/src/linux_uinput.hpp index 836109e..21d3b52 100644 --- a/src/linux_uinput.hpp +++ b/src/linux_uinput.hpp @@ -28,7 +28,7 @@ class ForceFeedbackHandler; class LinuxUinput { public: - enum DeviceType { kGenericDevice, kMouseDevice, kJoystickDevice }; + enum DeviceType { kGenericDevice, kKeyboardDevice, kMouseDevice, kJoystickDevice }; private: DeviceType m_device_type; diff --git a/src/ui_event.cpp b/src/ui_event.cpp index 0316951..beca40b 100644 --- a/src/ui_event.cpp +++ b/src/ui_event.cpp @@ -105,30 +105,37 @@ UIEvent::resolve_device_id(int slot, bool extra_devices) if (m_device_id == DEVICEID_AUTO) { - switch(type) + if (extra_devices) { - case EV_KEY: - if (is_mouse_button(code)) - { + switch(type) + { + case EV_KEY: + if (is_mouse_button(code)) + { + m_device_id = DEVICEID_MOUSE; + } + else if (is_keyboard_button(code)) + { + m_device_id = DEVICEID_KEYBOARD; + } + else + { + m_device_id = DEVICEID_JOYSTICK; + } + break; + + case EV_REL: m_device_id = DEVICEID_MOUSE; - } - else if (is_keyboard_button(code)) - { - m_device_id = DEVICEID_KEYBOARD; - } - else - { + break; + + case EV_ABS: m_device_id = DEVICEID_JOYSTICK; - } - break; - - case EV_REL: - m_device_id = DEVICEID_MOUSE; - break; - - case EV_ABS: - m_device_id = DEVICEID_JOYSTICK; - break; + break; + } + } + else + { + m_device_id = DEVICEID_GENERIC; } } diff --git a/src/ui_event.hpp b/src/ui_event.hpp index 3f6ec7c..1cd5ab0 100644 --- a/src/ui_event.hpp +++ b/src/ui_event.hpp @@ -23,11 +23,12 @@ #include <stdint.h> enum { - DEVICEID_INVALID = static_cast<uint16_t>(-4), - DEVICEID_KEYBOARD = static_cast<uint16_t>(-3), - DEVICEID_MOUSE = static_cast<uint16_t>(-2), + DEVICEID_INVALID = static_cast<uint16_t>(-5), + DEVICEID_KEYBOARD = static_cast<uint16_t>(-4), + DEVICEID_MOUSE = static_cast<uint16_t>(-3), + DEVICEID_JOYSTICK = static_cast<uint16_t>(-2), DEVICEID_AUTO = static_cast<uint16_t>(-1), - DEVICEID_JOYSTICK = 0 + DEVICEID_GENERIC = static_cast<uint16_t>(0) }; enum { diff --git a/src/uinput.cpp b/src/uinput.cpp index ee19be7..a8c2772 100644 --- a/src/uinput.cpp +++ b/src/uinput.cpp @@ -142,7 +142,7 @@ UInput::create_uinput_device(uint32_t device_id) else { log_debug("create device: " << device_id); - LinuxUinput::DeviceType device_type = LinuxUinput::kGenericDevice; + LinuxUinput::DeviceType device_type; switch (device_id) { @@ -155,10 +155,11 @@ UInput::create_uinput_device(uint32_t device_id) break; case DEVICEID_KEYBOARD: - device_type = LinuxUinput::kGenericDevice; + device_type = LinuxUinput::kKeyboardDevice; break; default: + device_type = LinuxUinput::kGenericDevice; break; }