Поскольку структура данных, которую вы хотите проанализировать, выглядит следующим образом:
{ 1: [272, 273], 3: [0, 1] }
... вы можете сделать что-то вроде (не используя verbose=True
здесь, так как это намного проще, если мы просто работаемс необработанными константами):
caps = device.capabilities()
has_rmb = evdev.ecodes.BTN_RIGHT in caps.get(evdev.ecodes.EV_KEY, [])
Если вы действительно хотите работать со строковыми формами (что я не рекомендую), ваши данные будут выглядеть следующим образом:
{ ('EV_KEY', 1): [('BTN_MOUSE', 272), ('BTN_RIGHT', 273), ...],
('EV_ABS', 3): [(('ABS_X', 0), AbsInfo(min=0, max=15360, fuzz=128, flat=0)),
(('ABS_Y', 1), AbsInfo(min=0, max=10240, fuzz=128, flat=0)),] }
... вы могли бы сделать что-то вроде:
caps = device.capabilities()
key_codes = evdev.ecodes[('EV_KEY', ecodes.EV_KEY)]
has_rmb = 'BTN_RIGHT' in [ kc[0][0] for key_codes ]
... но это много лишнего кода и накладных расходов для обхода бесполезности, которое только в структурах данных дляцели читабельности человека.