from kmk.common.event_defs import (hid_report_event, keycode_down_event,
                                   keycode_up_event)
from kmk.common.macros import KMKMacro


def simple_key_sequence(seq):
    def _simple_key_sequence(state):
        for key in seq:
            if not getattr(key, 'no_press', None):
                yield keycode_down_event(key)
                yield hid_report_event()

            if not getattr(key, 'no_release', None):
                yield keycode_up_event(key)
                yield hid_report_event()

    return KMKMacro(keydown=_simple_key_sequence)