dispatcher.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:Peppy 作者: project-owner 项目源码 文件源码
def handle_lirc_event(self, code):
        """ LIRC event handler. 

        To simplify event handling it wraps IR events into user event with keyboard sub-type. 
        For one IR event it generates two events - one for key down and one for key up.

        :param code: IR code
        """
        if self.screensaver_dispatcher.saver_running:
                self.screensaver_dispatcher.cancel_screensaver()
                return        
        d = {}
        d[KEY_SUB_TYPE] = SUB_TYPE_KEYBOARD
        d[KEY_ACTION] = pygame.KEYDOWN
        d[KEY_KEYBOARD_KEY] = None

        try:
            d[KEY_KEYBOARD_KEY] = lirc_keyboard_map[code[0]]
            station_screen = isinstance(self.current_screen, StationScreen)
            file_player_screen = isinstance(self.current_screen, FilePlayerScreen)

            if file_player_screen or (station_screen and self.current_screen.station_menu.current_mode == StationMenu.STATION_MODE):
                if code[0] == "up":
                    d[KEY_KEYBOARD_KEY] = kbd_keys[KEY_VOLUME_UP]
                elif code[0] == "down":
                    d[KEY_KEYBOARD_KEY] = kbd_keys[KEY_VOLUME_DOWN]

            logging.debug("Received IR key: %s", d[KEY_KEYBOARD_KEY])
        except KeyError:
            logging.debug("Received not supported key: %s", code[0])
            pass

        if d[KEY_KEYBOARD_KEY]:
            event = pygame.event.Event(USER_EVENT_TYPE, **d)
            pygame.event.post(event)
            d[KEY_ACTION] = pygame.KEYUP
            event = pygame.event.Event(USER_EVENT_TYPE, **d)
            pygame.event.post(event)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号