# Path: vulk/eventconstant.py
# class Button(IntEnum):
# class EventType(IntEnum):
# class KeyCode(IntEnum):
# class BaseEvent():
# class KeyboardEvent(BaseEvent):
# class MouseButtonEvent(BaseEvent):
# class MouseMotionEvent(BaseEvent):
# class QuitEvent(BaseEvent):
# class WindowEvent():
# class WindowResizedEvent(WindowEvent):
#     LEFT = sdl2.SDL_BUTTON_LEFT
#     MIDDLE = sdl2.SDL_BUTTON_MIDDLE
#     RIGHT = sdl2.SDL_BUTTON_RIGHT
#     X1 = sdl2.SDL_BUTTON_X1
#     X2 = sdl2.SDL_BUTTON_X2
#     AUDIO_DEVICE_ADDED = sdl2.SDL_AUDIODEVICEADDED
#     AUDIO_DEVICE_REMOVED = sdl2.SDL_AUDIODEVICEREMOVED
#     CONTROLLER_AXIS_MOTION = sdl2.SDL_CONTROLLERAXISMOTION
#     CONTROLLER_BUTTON_DOWN = sdl2.SDL_CONTROLLERBUTTONDOWN
#     CONTROLLER_BUTTON_UP = sdl2.SDL_CONTROLLERBUTTONUP
#     CONTROLLER_DEVICE_ADDED = sdl2.SDL_CONTROLLERDEVICEADDED
#     CONTROLLER_DEVICE_REMOVED = sdl2.SDL_CONTROLLERDEVICEREMOVED
#     CONTROLLER_DEVICE_REMAPPED = sdl2.SDL_CONTROLLERDEVICEREMAPPED
#     DROP_FILE = sdl2.SDL_DROPFILE
#     DROP_TEXT = sdl2.SDL_DROPTEXT
#     DROP_BEGIN = sdl2.SDL_DROPBEGIN
#     DROP_COMPLETE = sdl2.SDL_DROPCOMPLETE
#     FINGER_MOTION = sdl2.SDL_FINGERMOTION
#     FINGER_DOWN = sdl2.SDL_FINGERDOWN
#     FINGER_UP = sdl2.SDL_FINGERUP
#     KEY_DOWN = sdl2.SDL_KEYDOWN
#     KEY_UP = sdl2.SDL_KEYUP
#     JOY_AXISMOTION = sdl2.SDL_JOYAXISMOTION
#     JOY_BALLMOTION = sdl2.SDL_JOYBALLMOTION
#     JOY_HATMOTION = sdl2.SDL_JOYHATMOTION
#     JOY_BUTTONDOWN = sdl2.SDL_JOYBUTTONDOWN
#     JOY_BUTTONUP = sdl2.SDL_JOYBUTTONUP
#     JOY_DEVICEADDED = sdl2.SDL_JOYDEVICEADDED
#     JOY_DEVICEREMOVED = sdl2.SDL_JOYDEVICEREMOVED
#     MOUSE_MOTION = sdl2.SDL_MOUSEMOTION
#     MOUSE_BUTTONDOWN = sdl2.SDL_MOUSEBUTTONDOWN
#     MOUSE_BUTTONUP = sdl2.SDL_MOUSEBUTTONUP
#     MOUSE_WHEEL = sdl2.SDL_MOUSEWHEEL
#     QUIT = sdl2.SDL_QUIT
#     WINDOW = sdl2.SDL_WINDOWEVENT
#     WINDOW_RESIZED = sdl2.SDL_WINDOWEVENT_RESIZED
#     LEFT = sdl2.SDL_SCANCODE_LEFT
#     RIGHT = sdl2.SDL_SCANCODE_RIGHT
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
# def window_event_builder(event):
# def to_vulk_event(event):


from abc import ABC, abstractmethod
from itertools import takewhile
from vulk import eventconstant as ec
    To get more logic, you must use `BaseEventListener`.
    '''
    def handle(self, event):
        '''Called for each event received

        *Parameters:*

        - `event`: `eventconstant.BaseEvent`

        *Returns:*

        - `True` if event handled
        - `False` otherwise
        '''
        # Unknow event
        if not event:
            return False

        if event.type == ec.EventType.KEY_DOWN:
            return self.key_down(event.key)
        elif event.type == ec.EventType.KEY_UP:
            return self.key_up(event.key)
        elif event.type == ec.EventType.MOUSE_BUTTONUP:
            return self.mouse_up(event.x, event.y, event.button)
        elif event.type == ec.EventType.MOUSE_BUTTONDOWN:
            return self.mouse_down(event.x, event.y, event.button)
        elif event.type == ec.EventType.MOUSE_MOTION:
            return self.mouse_move(event.x, event.y, event.xr, event.yr)
        elif event.type == ec.EventType.QUIT:
            return self.quit()

# Path: vulk/eventconstant.py
# class Button(IntEnum):
# class EventType(IntEnum):
# class KeyCode(IntEnum):
# class BaseEvent():
# class KeyboardEvent(BaseEvent):
# class MouseButtonEvent(BaseEvent):
# class MouseMotionEvent(BaseEvent):
# class QuitEvent(BaseEvent):
# class WindowEvent():
# class WindowResizedEvent(WindowEvent):
#     LEFT = sdl2.SDL_BUTTON_LEFT
#     MIDDLE = sdl2.SDL_BUTTON_MIDDLE
#     RIGHT = sdl2.SDL_BUTTON_RIGHT
#     X1 = sdl2.SDL_BUTTON_X1
#     X2 = sdl2.SDL_BUTTON_X2
#     AUDIO_DEVICE_ADDED = sdl2.SDL_AUDIODEVICEADDED
#     AUDIO_DEVICE_REMOVED = sdl2.SDL_AUDIODEVICEREMOVED
#     CONTROLLER_AXIS_MOTION = sdl2.SDL_CONTROLLERAXISMOTION
#     CONTROLLER_BUTTON_DOWN = sdl2.SDL_CONTROLLERBUTTONDOWN
#     CONTROLLER_BUTTON_UP = sdl2.SDL_CONTROLLERBUTTONUP
#     CONTROLLER_DEVICE_ADDED = sdl2.SDL_CONTROLLERDEVICEADDED
#     CONTROLLER_DEVICE_REMOVED = sdl2.SDL_CONTROLLERDEVICEREMOVED
#     CONTROLLER_DEVICE_REMAPPED = sdl2.SDL_CONTROLLERDEVICEREMAPPED
#     DROP_FILE = sdl2.SDL_DROPFILE
#     DROP_TEXT = sdl2.SDL_DROPTEXT
#     DROP_BEGIN = sdl2.SDL_DROPBEGIN
#     DROP_COMPLETE = sdl2.SDL_DROPCOMPLETE
#     FINGER_MOTION = sdl2.SDL_FINGERMOTION
#     FINGER_DOWN = sdl2.SDL_FINGERDOWN
#     FINGER_UP = sdl2.SDL_FINGERUP
#     KEY_DOWN = sdl2.SDL_KEYDOWN
#     KEY_UP = sdl2.SDL_KEYUP
#     JOY_AXISMOTION = sdl2.SDL_JOYAXISMOTION
#     JOY_BALLMOTION = sdl2.SDL_JOYBALLMOTION
#     JOY_HATMOTION = sdl2.SDL_JOYHATMOTION
#     JOY_BUTTONDOWN = sdl2.SDL_JOYBUTTONDOWN
#     JOY_BUTTONUP = sdl2.SDL_JOYBUTTONUP
#     JOY_DEVICEADDED = sdl2.SDL_JOYDEVICEADDED
#     JOY_DEVICEREMOVED = sdl2.SDL_JOYDEVICEREMOVED
#     MOUSE_MOTION = sdl2.SDL_MOUSEMOTION
#     MOUSE_BUTTONDOWN = sdl2.SDL_MOUSEBUTTONDOWN
#     MOUSE_BUTTONUP = sdl2.SDL_MOUSEBUTTONUP
#     MOUSE_WHEEL = sdl2.SDL_MOUSEWHEEL
#     QUIT = sdl2.SDL_QUIT
#     WINDOW = sdl2.SDL_WINDOWEVENT
#     WINDOW_RESIZED = sdl2.SDL_WINDOWEVENT_RESIZED
#     LEFT = sdl2.SDL_SCANCODE_LEFT
#     RIGHT = sdl2.SDL_SCANCODE_RIGHT
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
#     def __init__(self, event):
# def window_event_builder(event):
# def to_vulk_event(event):


# Path: vulk/event.py
from abc import ABC, abstractmethod
from itertools import takewhile
from vulk import eventconstant as ec

    To get more logic, you must use `BaseEventListener`.
    '''
    def handle(self, event):
        '''Called for each event received

        *Parameters:*

        - `event`: `eventconstant.BaseEvent`

        *Returns:*

        - `True` if event handled
        - `False` otherwise
        '''
        # Unknow event
        if not event:
            return False

        if event.type == ec.EventType.KEY_DOWN:
            return self.key_down(event.key)
        elif event.type == ec.EventType.KEY_UP:
            return self.key_up(event.key)
        elif event.type == ec.EventType.MOUSE_BUTTONUP:
            return self.mouse_up(event.x, event.y, event.button)
        elif event.type == ec.EventType.MOUSE_BUTTONDOWN:
            return self.mouse_down(event.x, event.y, event.button)
        elif event.type == ec.EventType.MOUSE_MOTION:
            return self.mouse_move(event.x, event.y, event.xr, event.yr)
        elif event.type == ec.EventType.QUIT:
            return self.quit()

        elif event.type == ec.EventType.WINDOW_RESIZED: