keyboard: don't set a key if it's already set to the correct value
parent
e5b410e979
commit
ea033c8ff5
|
|
@ -89,5 +89,7 @@ class Keyboard:
|
|||
self.layout[(layer, row, col)] = keycode
|
||||
|
||||
def set_key(self, layer, row, col, code):
|
||||
self.usb_send(self.dev, struct.pack(">BBBBH", CMD_VIA_SET_KEYCODE, layer, row, col, code))
|
||||
self.layout[(layer, row, col)] = code
|
||||
key = (layer, row, col)
|
||||
if self.layout[key] != code:
|
||||
self.usb_send(self.dev, struct.pack(">BBBBH", CMD_VIA_SET_KEYCODE, layer, row, col, code))
|
||||
self.layout[key] = code
|
||||
|
|
|
|||
|
|
@ -112,3 +112,14 @@ class TestKeyboard(unittest.TestCase):
|
|||
self.assertEqual(kb.layout[(1, 1, 0)], 9)
|
||||
|
||||
dev.finish()
|
||||
|
||||
def test_set_key_twice(self):
|
||||
""" Tests that setting a key twice is optimized (doesn't send 2 cmds) """
|
||||
|
||||
kb, dev = self.prepare_keyboard(LAYOUT_2x2, [[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
|
||||
dev.expect("050101000009", "")
|
||||
kb.set_key(1, 1, 0, 9)
|
||||
kb.set_key(1, 1, 0, 9)
|
||||
self.assertEqual(kb.layout[(1, 1, 0)], 9)
|
||||
|
||||
dev.finish()
|
||||
|
|
|
|||
Loading…
Reference in New Issue