41 lines
1.9 KiB
Python
41 lines
1.9 KiB
Python
from keytypes import Keycode, Modifier
|
|
|
|
|
|
def test_keymap(keymap: list[list], output: bool = False) -> None:
|
|
if output:
|
|
print("Testing keymap for errors")
|
|
for layer in keymap:
|
|
for key in layer:
|
|
if isinstance(key, Keycode) or isinstance(key, Modifier):
|
|
print(
|
|
f"[{keymap.index(layer)}][{layer.index(key)}] {key.__class__.__name__}", end=": ")
|
|
key.self_test(keymap)
|
|
print("Valid")
|
|
continue
|
|
# if isinstance(key, Modifier):
|
|
# print(
|
|
# f"key is Modifier [{keymap.index(layer)}][{layer.index(key)}]", end=".. ")
|
|
# if key.keycode in valid_modifiers:
|
|
# print("and is valid")
|
|
# else:
|
|
# raise Exception()
|
|
# continue
|
|
# if isinstance(key, LayerKey):
|
|
# layer_key_name = key.__class__.__name__
|
|
# if output:
|
|
# print(
|
|
# f"key is {layer_key_name} [{keymap.index(layer)}][{layer.index(key)}]", end=".. ")
|
|
# key_on_layer_to_switch_to = keymap[key.layer][layer.index(key)]
|
|
# key_is_not_hold = type(
|
|
# key_on_layer_to_switch_to) is not type(key)
|
|
# hold_key_is_not_same_layer = type(
|
|
# key_on_layer_to_switch_to) is type(key) and key_on_layer_to_switch_to.layer != key.layer
|
|
# if key_is_not_hold or hold_key_is_not_same_layer:
|
|
# raise Exception(
|
|
# f"{layer_key_name} layer key on layer[{keymap.index(layer)}] key[{layer.index(key)}] must have an identical {layer_key_name} layer key on layer[{key.layer}] key[{layer.index(key)}]")
|
|
# else:
|
|
# if output:
|
|
# print("and is valid")
|
|
if output:
|
|
print("Done testing keymap")
|