aboutsummaryrefslogtreecommitdiff
path: root/find_hid.py
diff options
context:
space:
mode:
authorTim Blechmann <timblech@users.sourceforge.net>2005-12-09 12:50:06 +0000
committerIOhannes m zmölnig <zmoelnig@iem.at>2015-10-14 15:11:50 +0200
commite6c49319e1b84287f8fa07559b820cdf4cb5bc7b (patch)
tree3f9cbc5265f5c1df1cbd5fb762dc8d9caa61138f /find_hid.py
parent64b3627672c142a723a879bf134dbe226d8cfbdf (diff)
improved find_hid searching capabilities
svn path=/trunk/abstractions/tb/; revision=4179
Diffstat (limited to 'find_hid.py')
-rw-r--r--find_hid.py56
1 files changed, 44 insertions, 12 deletions
diff --git a/find_hid.py b/find_hid.py
index 15b56ff..99f474e 100644
--- a/find_hid.py
+++ b/find_hid.py
@@ -16,28 +16,60 @@
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
-# $Id: find_hid.py,v 1.1 2005-12-04 18:11:08 timblech Exp $
+# $Id: find_hid.py,v 1.2 2005-12-09 12:50:06 timblech Exp $
#
from os import popen, listdir
+def parse_device(event, rules):
+ pipe = popen('udevinfo -a -p /sys/class/input/%s' % event)
+
+ line = pipe.readline()
+ while line:
+ line.strip()
+ if '==' in line:
+ setting, value = line.split('==')
+ setting = setting.strip()
+ if '{' in setting:
+ setting = setting.split('{')[1].split('}')[0]
+ value = value.strip().strip('"')
+
+ if setting in rules:
+ if rules [setting] == value:
+ # we matched one rule, so we remove it from the pending rules
+ del rules[setting]
+
+ line = pipe.readline()
+
+ if len(rules) == 0:
+ pipe.close()
+ print event
+ return float(event.strip("event"))
+
+ pipe.close()
+ return -1
+
def find (*args):
name = ""
for token in args:
name+=" " + str(token)
+
name = name.strip()
+ rules = name.split('" "')
+ rules = map (lambda x: x.strip('"'), rules)
- events = filter(lambda x: "event" in x, listdir('/sys/class/input/'))
-
- for event in events:
- pipe = popen('udevinfo -a -p /sys/class/input/%s' % event)
+ ruledict = dict()
- line = pipe.readline()
- while line:
- if name in line:
- print event
- return float(event.strip("event"))
+ for rule in rules:
+ setting, value = rule.split('=',1)
+ ruledict[setting] = value
+ rules = ruledict
- line = pipe.readline()
- pipe.close()
+ events = filter(lambda x: "event" in x, listdir('/sys/class/input/'))
+
+ for event in events:
+ ret = parse_device(event, dict(rules))
+ if ret != -1:
+ return int(ret)
+
return -1