uinput-mapper/mapper.py

49 lines
1.2 KiB
Python
Raw Normal View History

2013-04-21 06:42:51 -04:00
import cinput
# XXX: Also parse name, etc
2013-04-21 06:42:51 -04:00
def parse_conf(f):
conf = {}
e = f.get_exposed_events()
for k, v in e.iteritems():
t = cinput.events[k]
if t == cinput.EV_SYN:
continue
conf[t] = {}
for key in v:
tt = cinput.event_keys[t][key]
conf[t][tt] = {
'type' : t,
'code' : tt,
2013-05-09 10:10:28 -04:00
'value' : None
#'value' : lambda x: x
2013-04-21 06:42:51 -04:00
}
return conf
class KeyMapper(object):
def __init__(self, config):
self._config = config
def map_event(self, ev):
_type = ev.type
if _type in self._config:
typemaps = self._config[_type]
if ev.code in typemaps:
info = typemaps[ev.code]
ev.type = info['type']
ev.code = info['code']
2013-05-09 10:10:28 -04:00
if info['value'] is not None:
ev.value = info['value'](ev.value)
else:
ev.value = ev.value
2013-04-21 06:42:51 -04:00
return ev
def expose(self, d):
for evt, v in self._config.iteritems():
for code, dat in v.iteritems():
d.expose_event_type(dat['type'])
d.expose_event(dat['type'], dat['code'])