Skip to content

Commit

Permalink
imple on_hierarchy_changed proper
Browse files Browse the repository at this point in the history
  • Loading branch information
anthonyrisinger committed Apr 6, 2014
1 parent b84f300 commit e85d1c8
Showing 1 changed file with 34 additions and 12 deletions.
46 changes: 34 additions & 12 deletions lib/xconsole/clients.py
Expand Up @@ -148,26 +148,24 @@ def on_xge(self, event):
if event.xgevent not in eventmap:
return

attr = eventmap[event.xgevent]

if event.xgevent == 11:
self.refresh_devices()
attr = eventmap[event.xgevent]
for controller in set(self.controller_map.values()):
handler = getattr(controller, attr, None)
if handler:
handler(event)
return None

device = self.device_map[event.deviceid]
if device.type in (
xinput.DeviceType.MasterPointer,
xinput.DeviceType.MasterKeyboard,
):
if not attr.startswith('on_raw_') and hasattr(event, 'sourceid'):
device = self.device_map[event.sourceid]
key = (device.deviceid, 0)
if 1 in device.classes:
key = tuple(reversed(key))
controller = self.next_controller(key)
handler = getattr(controller, eventmap[event.xgevent], None)
handler = getattr(controller, attr, None)
if handler:
return handler(event)

Expand Down Expand Up @@ -361,14 +359,38 @@ def unsink_events(self):
zip(self._key, (0, 0)),
)

def on_device_changed(self, event):
logger.info('on_device_changed: %s', self)
changes = self.manager.refresh_devices()
mdev = self.manager.device_map[event.deviceid]
sdev = self.manager.device_map[event.sourceid]
if sdev.attachment != mdev.deviceid:
def on_hierarchy_changed(self, event):
if not event.flags & xinput.HierarchyMask.DeviceEnabled:
return None

if not self.keym:
return None

logger.info('on_hierarchy_changed: %s', self)
if (self.skbd.attachment != self.mkbd.deviceid
or self.sptr.attachment != self.mptr.deviceid):
self._attach_devices()

@property
def mkbd(self):
mkbd = self.manager.device_map[self.atom.MKBD]
return mkbd

@property
def mptr(self):
mptr = self.manager.device_map[self.atom.MPTR]
return mptr

@property
def skbd(self):
skbd = self.manager.device_map[self._key[0]]
return skbd

@property
def sptr(self):
sptr = self.manager.device_map[self._key[1]]
return sptr

def on_raw_key_press(self, event):
logger.info(
'on_raw_key_press: %s %s',
Expand Down

0 comments on commit e85d1c8

Please sign in to comment.