View Single Post
Posts: 986 | Thanked: 1,526 times | Joined on Jul 2010
#18
try something like this:
(untested on my side, and i wont be trying to support keyboard keys, i think)
Code:
diff --git a/src/sf-button-monitor b/src/sf-button-monitor
index fd08e4e..ffe8c9d 100755
--- a/src/sf-button-monitor
+++ b/src/sf-button-monitor
@@ -166,12 +166,14 @@ sub main(@){
   my @pattern;
   my $lastButtonMillis = nowMillis();
   open $inputDevFH, "< $INPUT_DEV";
+  open $kbDevFH, "< $KEYBOARD_DEV";
 
   my $select = IO::Select->new();
   $select->add($inputDevFH);
+  $select->add($kbDevFH);
 
   while(1){
-    my ($buttonId, $value) = readButtonEvent($inputDevFH);
+    my ($buttonId, $value) = readButtonEvent($select);
 
     my $now = nowMillis();
     my $elapsedMillis = $now - $lastButtonMillis;
@@ -212,15 +214,18 @@ sub main(@){
 
 #blocks until a valid button press/release event and then returns it
 sub readButtonEvent($){
-  my ($inputDevFH) = @_;
+  my ($select) = @_;
   my $byteStr;
   while(1){
-    read $inputDevFH, $byteStr, 16;
-    my @bytesDec = map {ord $_} split //, $byteStr;
-    my $buttonId = $bytesDec[10];
-    my $value = $bytesDec[12];
-    if(defined $OK_BUTTON_IDS{$buttonId}){
-      return ($buttonId, $value);
+    my @fhs = $select->can_read();
+    if(@fhs > 0){
+      read $fhs[0], $byteStr, 16;
+      my @bytesDec = map {ord $_} split //, $byteStr;
+      my $buttonId = $bytesDec[10];
+      my $value = $bytesDec[12];
+      if(defined $OK_BUTTON_IDS{$buttonId}){
+        return ($buttonId, $value);
+      }
     }
   }
 }
__________________
~ teleshoes ~
 

The Following 4 Users Say Thank You to wolke For This Useful Post: