aboutsummaryrefslogtreecommitdiff
path: root/lib/driver/rc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/driver/rc.cpp')
-rw-r--r--lib/driver/rc.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/driver/rc.cpp b/lib/driver/rc.cpp
index c56fde44..c1ff13ea 100644
--- a/lib/driver/rc.cpp
+++ b/lib/driver/rc.cpp
@@ -129,8 +129,11 @@ void eRCInputEventDriver::setExclusive(bool b)
{
if (handle >= 0)
{
+ long evbits;
int grab = b;
- if (::ioctl(handle, EVIOCGRAB, grab) < 0)
+ if (::ioctl(handle, EVIOCGBIT(0, EV_MAX+1), &evbits) < 0)
+ perror("EVIOCGBIT");
+ else if ((evbits & (1 << 0x1E)) && ::ioctl(handle, EVIOCGRAB, grab) < 0)
perror("EVIOCGRAB");
}
}