-rw-r--r-- | libopie2/opiecore/oinputsystem.cpp | 17 | ||||
-rw-r--r-- | libopie2/opiecore/oinputsystem.h | 7 |
2 files changed, 20 insertions, 4 deletions
diff --git a/libopie2/opiecore/oinputsystem.cpp b/libopie2/opiecore/oinputsystem.cpp index bfdc31f..fde36c3 100644 --- a/libopie2/opiecore/oinputsystem.cpp +++ b/libopie2/opiecore/oinputsystem.cpp | |||
@@ -41,3 +41,8 @@ using namespace Opie::Core; | |||
41 | 41 | ||
42 | #define BUFSIZE 256 | 42 | #define BUFSIZE 256 |
43 | #define BIT_MASK( name, numbits ) \ | ||
44 | unsigned short name[ ((numbits) - 1) / (sizeof( short ) * 8) + 1 ]; \ | ||
45 | memset( name, 0, sizeof( name ) ) | ||
46 | #define BIT_TEST( bitmask, bit ) \ | ||
47 | ( bitmask[ (bit) / sizeof(short) / 8 ] & (1u << ( (bit) % (sizeof(short) * 8))) ) | ||
43 | 48 | ||
@@ -142 +147,11 @@ QString OInputDevice::uniq() const | |||
142 | 147 | ||
148 | bool OInputDevice::hasFeature( Feature bit ) const | ||
149 | { | ||
150 | BIT_MASK( features, EV_MAX ); | ||
151 | |||
152 | if( ioctl( _fd, EVIOCGBIT( 0, EV_MAX ), features) < 0 ) | ||
153 | return false; | ||
154 | else | ||
155 | return BIT_TEST( features, bit ); | ||
156 | } | ||
157 | |||
diff --git a/libopie2/opiecore/oinputsystem.h b/libopie2/opiecore/oinputsystem.h index 350656b..4d913a1 100644 --- a/libopie2/opiecore/oinputsystem.h +++ b/libopie2/opiecore/oinputsystem.h | |||
@@ -95,6 +95,6 @@ class OInputDevice : public QObject | |||
95 | 95 | ||
96 | enum EventType | 96 | enum Feature |
97 | { | 97 | { |
98 | Synchronous = EV_SYN, | 98 | Synchronous = EV_SYN, |
99 | Keyboard = EV_KEY, | 99 | Keys = EV_KEY, |
100 | Relative = EV_REL, | 100 | Relative = EV_REL, |
@@ -102,3 +102,3 @@ class OInputDevice : public QObject | |||
102 | Miscellaneous = EV_MSC, | 102 | Miscellaneous = EV_MSC, |
103 | Led = EV_LED, | 103 | Leds = EV_LED, |
104 | Sound = EV_SND, | 104 | Sound = EV_SND, |
@@ -136,2 +136,3 @@ class OInputDevice : public QObject | |||
136 | QString uniq() const; | 136 | QString uniq() const; |
137 | bool hasFeature( Feature ) const; | ||
137 | 138 | ||