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
|
self.layout[(layer, row, col)] = keycode
|
||||||
|
|
||||||
def set_key(self, layer, row, col, code):
|
def set_key(self, layer, row, col, code):
|
||||||
self.usb_send(self.dev, struct.pack(">BBBBH", CMD_VIA_SET_KEYCODE, layer, row, col, code))
|
key = (layer, row, col)
|
||||||
self.layout[(layer, row, col)] = code
|
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)
|
self.assertEqual(kb.layout[(1, 1, 0)], 9)
|
||||||
|
|
||||||
dev.finish()
|
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