Source code for bt_button.buttons.ab_shutter

import logging
from enum import Enum

from ._event_device import EventDevice

log = logging.getLogger(__name__)


[docs]class AbShutterButtonEvent(Enum): PUSHED = 1 RELEASED = 0 KEEP = 2
[docs]class AbShutterButton(Enum): LARGE = 115 SMALL = 28
[docs]class AbShutter(EventDevice): """ Create instance of AbShutter. Parameters ---------- mac_addr AbShutter's MAC Address """ def __init__(self, mac_addr): super().__init__(mac_addr, "AB Shutter3") self.button_event_funcs = {} for button in list(AbShutterButton): self.button_event_funcs[button] = {} for event in list(AbShutterButtonEvent): self.button_event_funcs[button][event] = None log.info("{}: initialized".format(self.name))
[docs] def attach_button_event_listener(self, button, event, func): """ Attach function that be called when button pushed. Parameters ---------- button : AbShutterButton Enum to identify target button event : AbShutterButtonEvent Enum to identify target event func : function(e) This function will be called with evdev.events.InputEvent when target event happened. """ self.button_event_funcs[button][event] = func
[docs] def detach_button_event_listener(self, button, event): """ Detach function that be called when button event happened. Parameters ---------- button : AbShutterButton Enum to identify target button event : AbShutterButtonEvent Enum to identify target event """ self.button_event_funcs[button][event] = None
def _key_event(self, e): button = AbShutterButton(e.code) event = AbShutterButtonEvent(e.value) log.info("[{}] {}: {}".format(self.name, button, event)) if self.button_event_funcs[button][event] is not None: self.button_event_funcs[button][event](e)