Build evdev, add button capabilities mask.
authorbruceperens <bruceperens@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 18 Apr 2014 17:15:33 +0000 (17:15 +0000)
committerbruceperens <bruceperens@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 18 Apr 2014 17:15:33 +0000 (17:15 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1504 01035d8c-6547-0410-b346-abe4f91aad63

freedv-server/CMakeLists.txt
freedv-server/source/platform/linux/evdev.cpp
freedv-server/source/platform/linux/evdev.h

index 6d2a9ce2df4676ab172be0d0a7752e2671fc729c..bbaf7f3760dd7b881e56f6472ef46a37ad3f2794 100644 (file)
@@ -97,6 +97,8 @@ set(Compile.linux.sources
   source/platform/linux/alsa.cpp
   source/platform/linux/audio_out_alsa.cpp
   source/platform/linux/audio_in_alsa.cpp
+  source/platform/linux/evdev.cpp
+  source/platform/linux/ptt_evdev.cpp
 )
 
 set(Compile.linux.libraries
index 1ff4e0f57f2f5dc4d7e301feb68ecdcfc7496065..a68c42a41d3467500239b6ff3aac2058f5208272 100644 (file)
@@ -107,6 +107,11 @@ namespace FreeDV {
   
     device.name = strdup(str.str().c_str());
   
+    if ( test_bit(EV_KEY, device.event_types) == 0
+    || ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(device.buttons)), device.buttons)
+     < 0 )
+      memset(device.buttons, 0, sizeof(device.buttons));
+
     return true;
   }
   
index ade529d672bf96799419754f701726f7b7f48112..bbf74b0e2dfde99e7d31627d8e7981af896cc301 100644 (file)
@@ -15,6 +15,7 @@ namespace FreeDV {
       char *   special_file;
       char *   name;
       uint8_t  event_types[(EV_MAX + 7) / 8];
+      uint8_t  buttons[(KEY_MAX + 7) / 8];
     };
   
   private: