VERSION 1

KEYSWITCH TOPSY_1  0 0
KEYSWITCH TOPSY_2  0 1
KEYSWITCH A        1 0
KEYSWITCH B        1 1
KEYSWITCH LSHIFT   2 0
KEYSWITCH RSHIFT   2 1
KEYSWITCH LALT     2 2
KEYSWITCH MEH      2 3
KEYSWITCH SHIFT_X  3 0
KEYSWITCH CTRL_Y   3 1

# ==============================================================================
NAME TopsyTurvy without shift

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy with shift

RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover from shift

RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover to shift

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy encompassing shift

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover from other

RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report Key_A # The report should contain `A`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE A
RUN 1 cycle
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover to other

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_A # The report should contain only `A`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
RUN 5 ms
RELEASE A
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy encompassing other

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_A # The report should contain only `A`
RUN 5 ms
RELEASE A
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle

# ==============================================================================
NAME TopsyTurvy encompassed by other

RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report Key_A # The report should contain `A`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty
RUN 5 ms
RELEASE A
RUN 1 cycle

# ==============================================================================
NAME TopsyTurvy rollover from other with shift

RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift Key_A # The report should contain `shift` + `A`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
RELEASE A
RUN 1 cycle
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover to other with shift

RUN 5 ms
PRESS LSHIFT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_1 # The report should contain only `1`
RUN 5 ms
PRESS A
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_A # The report should contain `shift` + `A`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
RUN 5 ms
RELEASE A
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
RUN 5 ms
RELEASE LSHIFT
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover to TopsyTurvy

RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
PRESS TOPSY_2
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift Key_2 # The report should contain `shift` + `2`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
RUN 5 ms
RELEASE TOPSY_2
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy rollover from other modifier

RUN 5 ms
PRESS LALT
RUN 1 cycle
EXPECT keyboard-report Key_LeftAlt # The report should contain `alt`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftAlt Key_LeftShift # The report should contain `alt` + `shift`
EXPECT keyboard-report Key_LeftAlt Key_LeftShift Key_1 # The report should contain `alt` + `shift` + `1`
RUN 5 ms
RELEASE LALT
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift Key_1 # The report should contain `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftShift # The report should contain `shift`
EXPECT keyboard-report empty # Report should be empty

# ==============================================================================
NAME TopsyTurvy with other modifier

RUN 5 ms
PRESS LALT
RUN 1 cycle
EXPECT keyboard-report Key_LeftAlt # The report should contain `alt`
RUN 5 ms
PRESS TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftAlt Key_LeftShift # The report should contain `alt` + `shift`
EXPECT keyboard-report Key_LeftAlt Key_LeftShift Key_1 # The report should contain `alt` + `shift` + `1`
RUN 5 ms
RELEASE TOPSY_1
RUN 1 cycle
EXPECT keyboard-report Key_LeftAlt Key_LeftShift # The report should contain `alt` + `shift`
EXPECT keyboard-report Key_LeftAlt # The report should contain `alt`
RUN 5 ms
RELEASE LALT
RUN 1 cycle
EXPECT keyboard-report empty # Report should be empty