def main(argv): last_time = 0 deltas = {} d = evemu.Device(argv[1], create=False) for e in d.events(): if not e.matches("EV_SYN", "SYN_REPORT"): print(" %s %s %d" % (evemu.event_get_name(e.type), \ evemu.event_get_name(e.type, e.code), \ e.value)) continue time = usec(e.sec, e.usec) dt = (time - last_time) / 1000 last_time = time print("%4dms ---- %s %s ----" % (dt, evemu.event_get_name(e.type), \ evemu.event_get_name(e.type, e.code))) deltas[dt] = dict.get(deltas, dt, 0) + 1 print("\nDistribution of deltas in ms:") for key, value in dict.iteritems(deltas): print(" %dms: %d" % (key, value))
def main(argv): last_time = 0 deltas = {} d = evemu.Device(argv[1], create=False) for e in d.events(): if not e.matches("EV_SYN", "SYN_REPORT"): print(" %s %s %d" % (evemu.event_get_name(e.type), \ evemu.event_get_name(e.type, e.code), \ e.value)) continue time = usec(e.sec, e.usec) dt = (time - last_time)/1000 last_time = time print("%4dms ---- %s %s ----" % (dt, evemu.event_get_name(e.type), \ evemu.event_get_name(e.type, e.code))) deltas[dt] = dict.get(deltas, dt, 0) + 1 print("\nDistribution of deltas in ms:") for key, value in dict.iteritems(deltas): print(" %dms: %d" % (key, value))
def test_event_names(self): self.assertEqual(evemu.event_get_value("EV_SYN"), 0x00) self.assertEqual(evemu.event_get_value("EV_KEY"), 0x01) self.assertEqual(evemu.event_get_value("EV_ABS"), 0x03) self.assertEqual(evemu.event_get_value("EV_FOO"), None) self.assertEqual(evemu.event_get_value(1), 1) self.assertEqual(evemu.event_get_value(100), None) self.assertEqual(evemu.event_get_value("EV_SYN", "SYN_REPORT"), 0x00) self.assertEqual(evemu.event_get_value("EV_KEY", "KEY_Z"), 44) self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_X"), 0x00) self.assertEqual(evemu.event_get_value("EV_ABS", "ABS_FOO"), None) self.assertEqual(evemu.event_get_value(1), 1) self.assertEqual(evemu.event_get_value(100), None) self.assertEqual(evemu.event_get_name(0x00), "EV_SYN") self.assertEqual(evemu.event_get_name(0x01), "EV_KEY") self.assertEqual(evemu.event_get_name(0x03), "EV_ABS") self.assertEqual(evemu.event_get_name(0xFFFF), None) self.assertEqual(evemu.event_get_name("foo"), None) self.assertEqual(evemu.event_get_name("EV_SYN"), "EV_SYN") self.assertEqual(evemu.event_get_name("EV_SYN", 0x00), "SYN_REPORT") self.assertEqual(evemu.event_get_name("EV_REL", 0x01), "REL_Y") self.assertEqual(evemu.event_get_name("EV_ABS", 0x00), "ABS_X") self.assertEqual(evemu.event_get_name("EV_ABS", 0xFFFF), None) self.assertEqual(evemu.event_get_name("EV_ABS", "foo"), None) self.assertEqual(evemu.event_get_name("EV_ABS", "ABS_X"), "ABS_X") self.assertEqual(evemu.event_get_name(None), None) self.assertEqual(evemu.event_get_name(None, None), None)
def main(argv): d = evemu.Device(argv[1], create=False) offsets = {} offset = 2 # timestamp count star separator print('Legend:') print(' time, count of keys down, * to mark <3ms timestamp') print(' + .... key down, | .... key is down, ^ .... key up') print(' ' * 12 + ' ' + ' ' + ' |', end='') for c in range(ord('a'), ord('z') + 1): print('{}'.format(chr(c)), end='') offsets[offset] = chr(c) offset += 1 for c in range(ord('0'), ord('9') + 1): print('{}'.format(chr(c)), end='') offsets[offset] = chr(c) offset += 1 offset += 1 print(' Spc Bksp Del Ret LShf RShf', end='') offsets[offset + 2] = 'space' offset += 4 offsets[offset + 2] = 'backspace' offset += 5 offsets[offset + 1] = 'delete' offset += 4 offsets[offset + 1] = 'enter' offset += 4 offsets[offset + 2] = 'leftshift' offset += 5 offsets[offset + 2] = 'rightshift' offset += 5 print('') max_offset = offset char = ['^', '+', '|', ' '] down = {} last_down = {} bounce = False for e in d.events(): if e.matches('EV_SYN', 'SYN_REPORT'): line = [] line.append('{:06d}.{:06d}'.format(e.sec, e.usec)) line.append(' {} '.format(len(down))) time = e.sec * 1000000 + e.usec if bounce: line.append('*') bounce = False else: line.append(' ') line.append('|') for i in range(2, max_offset): try: line.append(char[down[offsets[i]]]) except KeyError: line.append(' ') print(''.join(line)) for key in down: if down[key] == DOWN: down[key] = IS_DOWN elif down[key] == UP: down[key] = NONE d2 = {} for key in down.keys(): value = down[key] if value != NONE: d2[key] = value down = d2 if not e.matches('EV_KEY'): continue key = evemu.event_get_name(e.type, e.code) key = key[4:].lower() # remove KEY_ prefix down[key] = e.value if e.value: time = e.sec * 1000000 + e.usec if (key in last_down) and (time - last_down[key] < 70000): # 70 ms bounce = True else: last_down[key] = time