evdev module-----ecodes.py

 1 # encoding: utf-8
 2 
 3 '''
 4 This modules exposes most integer constants defined in ``linux/input.h``.
 5 
 6 Exposed constants::
 7 
 8     KEY, ABS, REL, SW, MSC, LED, BTN, REP, SND, ID, EV, BUS, SYN
 9 
10 This module also provides numerous reverse and forward mappings that are best
11 illustrated by a few examples::
12 
13     >>> evdev.ecodes.KEY_A
14     30
15 
16     >>> evdev.ecodes.ecodes['KEY_A']
17     30
18 
19     >>> evdev.ecodes.KEY[30]
20     'KEY_A'
21 
22     >>> evdev.ecodes.REL[0]
23     'REL_X'
24 
25     >>> evdev.ecodes.EV[evdev.EV_KEY]
26     'EV_KEY'
27 
28     >>> evdev.ecodes.bytype[EV_REL][0]
29     'REL_X'
30 '''
31 
32 from inspect import getmembers
33 from evdev import _ecodes
34 
35 
36 #: mapping of names to values
37 ecodes = {}
38 
39 prefixes = 'KEY ABS REL SW MSC LED BTN REP SND ID EV BUS SYN'
40 g = globals()
41 
42 for k,v in getmembers(_ecodes):
43     for i in prefixes.split():
44         if k.startswith(i):
45             g.setdefault(i, {})[v] = k
46             ecodes[k] = v
47 
48 
49 #: keys are a combination of all BTN and KEY codes
50 keys = {}
51 keys.update(BTN)
52 keys.update(KEY)
53 
54 # make keys safe to use for the default list of uinput device
55 # capabilities
56 del keys[_ecodes.KEY_MAX]
57 del keys[_ecodes.KEY_CNT]
58 
59 #: mapping of event types to other value/name mappings
60 bytype = {
61     _ecodes.EV_KEY: keys,
62     _ecodes.EV_ABS: ABS,
63     _ecodes.EV_REL: REL,
64     _ecodes.EV_SW:  SW,
65     _ecodes.EV_MSC: MSC,
66     _ecodes.EV_LED: LED,
67     _ecodes.EV_REP: REP,
68     _ecodes.EV_SND: SND,
69     _ecodes.EV_SYN: SYN, }
70 
71 from evdev._ecodes import *
72 
73 # cheaper than whitelisting in an __all__
74 del k, v, i, getmembers, g, prefixes

 

posted @ 2016-07-13 10:02  碧水东流至此回  阅读(380)  评论(0编辑  收藏  举报