keyboard: don't set a key if it's already set to the correct value

main
Ilya Zhuravlev 2020-10-17 05:33:43 -04:00
parent e5b410e979
commit ea033c8ff5
2 changed files with 15 additions and 2 deletions

View File

@ -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

View File

@ -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()