/usr/lib/python3/dist-packages/evdev/ecodes.py is in python3-evdev 0.4.1-0ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # encoding: utf-8
'''
This modules exposes most integer constants defined in ``linux/input.h``.
Exposed constants::
KEY, ABS, REL, SW, MSC, LED, BTN, REP, SND, ID, EV, BUS, SYN, FF,
FF_STATUS
This module also provides numerous reverse and forward mappings that are best
illustrated by a few examples::
>>> evdev.ecodes.KEY_A
30
>>> evdev.ecodes.ecodes['KEY_A']
30
>>> evdev.ecodes.KEY[30]
'KEY_A'
>>> evdev.ecodes.REL[0]
'REL_X'
>>> evdev.ecodes.EV[evdev.EV_KEY]
'EV_KEY'
>>> evdev.ecodes.bytype[EV_REL][0]
'REL_X'
Values in reverse mappings may point to one or more ecodes. For example::
>>> evdev.ecodes.FF[80]
['FF_EFFECT_MIN', 'FF_RUMBLE']
>>> evdev.ecodes.FF[81]
'FF_PERIODIC'
'''
from inspect import getmembers
from evdev import _ecodes
#: mapping of names to values
ecodes = {}
prefixes = 'KEY ABS REL SW MSC LED BTN REP SND ID EV BUS SYN FF_STATUS FF'
prev_prefix = ''
g = globals()
# eg. code: 'REL_Z', val: 2
for code, val in getmembers(_ecodes):
for prefix in prefixes.split(): # eg. 'REL'
if code.startswith(prefix):
ecodes[code] = val
# FF_STATUS codes should not appear in the FF reverse mapping
if not code.startswith(prev_prefix):
d = g.setdefault(prefix, {})
# codes that share the same value will be added to a list. eg:
# >>> ecodes.FF_STATUS
# {0: 'FF_STATUS_STOPPED', 1: ['FF_STATUS_MAX', 'FF_STATUS_PLAYING']}
if val in d:
if isinstance(d[val], list):
d[val].append(code)
else:
d[val] = [d[val], code]
else:
d[val] = code
prev_prefix = prefix
#: keys are a combination of all BTN and KEY codes
keys = {}
keys.update(BTN)
keys.update(KEY)
# make keys safe to use for the default list of uinput device
# capabilities
del keys[_ecodes.KEY_MAX]
del keys[_ecodes.KEY_CNT]
#: mapping of event types to other value/name mappings
bytype = {
_ecodes.EV_KEY: keys,
_ecodes.EV_ABS: ABS,
_ecodes.EV_REL: REL,
_ecodes.EV_SW: SW,
_ecodes.EV_MSC: MSC,
_ecodes.EV_LED: LED,
_ecodes.EV_REP: REP,
_ecodes.EV_SND: SND,
_ecodes.EV_SYN: SYN,
_ecodes.EV_FF: FF,
_ecodes.EV_FF_STATUS: FF_STATUS, }
from evdev._ecodes import *
# cheaper than whitelisting in an __all__
del code, val, prefix, getmembers, g, d, prefixes, prev_prefix
|