legoEv3/evdev/__pycache__/util.cpython-35.pyc
O†bU˜
ã @ s„ d d l Z d d l Z d d l Z d d l m Z d d l m Z d d d „ Z d d „ Z d d
„ Z d d d
„ Z
d Z d S)é N)Úecodes)Ú
event_factoryz
/dev/inputc C s1 t j d j | ƒ ƒ } t t t | ƒ ƒ } | S)z8List readable character devices in ``input_device_dir``.z {}/event*)ÚglobÚformatÚlistÚfilterÚ is_device)Zinput_device_dirZfns© r ú,/usr/lib/python3/dist-packages/evdev/util.pyÚlist_devices s r c C sc t j j | ƒ s d St j | ƒ t j } t j | ƒ s? d St j | t j t j Bƒ s_ d Sd S)z<Check if ``fn`` is a readable and writable character device.FT) ÚosÚpathÚexistsÚstatÚST_MODEÚS_ISCHRÚaccessÚR_OKÚW_OK)ÚfnÚmr r r
r s r c C s( | j t k r t | j | ƒ S| Sd S)a
Categorize an event according to its type.
The :data:`event_factory <evdev.events.event_factory>` dictionary
maps event types to sub-classes of :class:`InputEvent
<evdev.events.InputEvent>`. If the event cannot be categorized, it
is returned unmodified.N)Útyper )Zeventr r r
Ú
categorize$ s r ú?c c s x| j ƒ D]\ } } t j | } | t j k rA t j } n t t | j d ƒ d ƒ } g } x¡ | D]™ } t | t ƒ rÎ | d | k r± | | d | d f | d f n | | d f | d f } n( | | k rê | | | f n | | f } | j | ƒ qj W| | f | f Vq
Wd S)a¤
Resolve event codes and types to their verbose names.
:param typecodemap: mapping of event types to lists of event codes.
:param unknown: symbol to which unknown types or codes will be resolved.
Example::
resolve_ecodes({ 1: [272, 273, 274] })
{ ('EV_KEY', 1): [('BTN_MOUSE', 272),
('BTN_RIGHT', 273),
('BTN_MIDDLE', 274)] }
If ``typecodemap`` contains absolute axis info (instances of
:class:`AbsInfo <evdev.device.AbsInfo>` ) the result would look
like::
resolve_ecodes({ 3: [(0, AbsInfo(...))] })
{ ('EV_ABS', 3L): [(('ABS_X', 0L), AbsInfo(...))] }
Ú_é r Néÿÿÿÿ)
Úitemsr ZEVZEV_KEYÚkeysÚgetattrÚsplitÚ
isinstanceÚtupleÚappend) ZtypecodemapÚunknownÚetypeZcodesZ type_nameZ
code_namesÚresÚiÚlr r r
Úresolve_ecodes3 s
2(r) )r r r r) )r r r Zevdevr Zevdev.eventsr r r r r) Ú__all__r r r r
Ú<module> s /