Another shot at squishing this bug.
This commit is contained in:
@@ -201,16 +201,49 @@ def test_x11_optional_modifier_masks_can_exclude_numlock():
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_x11_get_led_state_reads_lock_modifiers_from_pointer_mask():
|
||||
def test_x11_get_led_state_reads_cached_lock_modifiers_without_x_round_trip():
|
||||
x11 = X11Driver()
|
||||
x11.num_lock_mask = X.Mod2Mask
|
||||
pointer = Mock(mask=X.Mod2Mask | X.LockMask)
|
||||
x11.modifier_state = X.Mod2Mask | X.LockMask
|
||||
x11.root = Mock()
|
||||
x11.root.query_pointer.return_value = pointer
|
||||
|
||||
assert x11.get_led_state(0) is True
|
||||
assert x11.get_led_state(1) is True
|
||||
assert x11.get_led_state(2) is False
|
||||
x11.root.query_pointer.assert_not_called()
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
def test_x11_update_modifier_state_tracks_event_masks_and_lock_toggles():
|
||||
x11 = X11Driver()
|
||||
x11.num_lock_mask = X.Mod2Mask
|
||||
|
||||
x11.update_modifier_state_from_event(
|
||||
{
|
||||
"event_name": "KEY_KP8",
|
||||
"event_state": 1,
|
||||
"event_raw_state": X.Mod2Mask,
|
||||
}
|
||||
)
|
||||
assert x11.get_led_state(0) is True
|
||||
|
||||
x11.update_modifier_state_from_event(
|
||||
{
|
||||
"event_name": "KEY_NUMLOCK",
|
||||
"event_state": 1,
|
||||
"event_raw_state": X.Mod2Mask,
|
||||
}
|
||||
)
|
||||
assert x11.get_led_state(0) is False
|
||||
|
||||
x11.update_modifier_state_from_event(
|
||||
{
|
||||
"event_name": "KEY_CAPSLOCK",
|
||||
"event_state": 1,
|
||||
"event_raw_state": 0,
|
||||
}
|
||||
)
|
||||
assert x11.get_led_state(1) is True
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
Reference in New Issue
Block a user