From b2c82bfe2f200c1e598d57ba17b207dc221bbd4c Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 14:50:20 +0200 Subject: don't execute main() when included as module --- cros-keyboard-map.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 3f491be..e0b89e8 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -119,4 +119,5 @@ def main(): with open("cros.conf", "w") as conf: conf.write(config) -main() +if __name__ == "__main__": + main() -- cgit 1.4.1-2-gfad0 From d7166614956eacbc3935fbde834818fa50ec3311 Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 15:17:00 +0200 Subject: convert vivaldi_scancode_to_keyd to dictionary --- cros-keyboard-map.py | 70 +++++++++++++++++++--------------------------------- 1 file changed, 26 insertions(+), 44 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index e0b89e8..0342c0d 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -1,43 +1,25 @@ #!/usr/bin/env python3 -def vivaldi_scancode_to_keyd(scancode): - match scancode: - case "90": - return "previoussong" - case "91": - return "zoom" - case "92": - return "scale" - case "93": - return "print" - case "94": - return "brightnessdown" - case "95": - return "brightnessup" - case "97": - return "kbdillumdown" - case "98": - return "kbdillumup" - case "99": - return "nextsong" - case "9A": - return "playpause" - case "9B": - return "micmute" - case "9E": - return "kbdillumtoggle" - case "A0": - return "mute" - case "AE": - return "volumedown" - case "B0": - return "volumeup" - case "E9": - return "forward" - case "EA": - return "back" - case "E7": - return "refresh" +vivaldi_keys = { + "90": "previoussong", + "91": "zoom", + "92": "scale", + "93": "print", + "94": "brightnessdown", + "95": "brightnessup", + "97": "kbdillumdown", + "98": "kbdillumup", + "99": "nextsong", + "9A": "playpause", + "9B": "micmute", + "9E": "kbdillumtoggle", + "A0": "mute", + "AE": "volumedown", + "B0": "volumeup", + "E9": "forward", + "EA": "back", + "E7": "refresh", +} def load_physmap_data(): try: @@ -59,21 +41,21 @@ k:0000:0000 for scancode in physmap: i += 1 # Map zoom to f11 since most applications wont listen to zoom - if vivaldi_scancode_to_keyd(scancode) == "zoom": + if vivaldi_keys[scancode] == "zoom": mapping = "f11" else: - mapping = vivaldi_scancode_to_keyd(scancode) + mapping = vivaldi_keys[scancode] config += f"f{i} = {mapping}\n" config += "\n" # make vivaldi keys act like vivaldi keys when super isn't held for scancode in physmap: # Map zoom to f11 since most applications wont listen to zoom - if vivaldi_scancode_to_keyd(scancode) == "zoom": + if vivaldi_keys[scancode] == "zoom": mapping = "f11" else: - mapping = vivaldi_scancode_to_keyd(scancode) - config += f"{vivaldi_scancode_to_keyd(scancode)} = {mapping}\n" + mapping = vivaldi_keys[scancode] + config += f"{vivaldi_keys[scancode]} = {mapping}\n" # map lock button to coffee config += "\nf13=coffee\nsleep=coffee\n" @@ -90,7 +72,7 @@ k:0000:0000 config += "\n" for scancode in physmap: i += 1 - config += f"{vivaldi_scancode_to_keyd(scancode)} = f{i}\n" + config += f"{vivaldi_keys[scancode]} = f{i}\n" # Add various extra shortcuts config += """\n[alt] -- cgit 1.4.1-2-gfad0 From a2d8a6d65250bbbfb3bad1a13b4ff949a0b5bdda Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 15:33:02 +0200 Subject: add --file argument --- cros-keyboard-map.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 0342c0d..848e179 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -1,5 +1,7 @@ #!/usr/bin/env python3 +import argparse + vivaldi_keys = { "90": "previoussong", "91": "zoom", @@ -92,13 +94,17 @@ backspace = C-A-delete""" return config def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-f", "--file", default="cros.conf", help="path to save config (default: cros.conf)") + args = vars(parser.parse_args()) + physmap = load_physmap_data() if not physmap: print("no function row mapping found, using default mapping") physmap = ['EA', 'E9', 'E7', '91', '92', '94', '95', 'A0', 'AE', 'B0'] config = create_keyd_config(physmap) - with open("cros.conf", "w") as conf: + with open(args["file"], "w") as conf: conf.write(config) if __name__ == "__main__": -- cgit 1.4.1-2-gfad0 From bc6214c66ea79afeb294d4ee8d4ddf41df2668c0 Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 15:49:04 +0200 Subject: better naming for functions --- cros-keyboard-map.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 848e179..7a3dc41 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -23,14 +23,14 @@ vivaldi_keys = { "E7": "refresh", } -def load_physmap_data(): +def get_physmap_data(): try: with open("/sys/bus/platform/devices/i8042/serio0/function_row_physmap", "r") as file: return file.read().strip().split() except FileNotFoundError: return "" -def create_keyd_config(physmap): +def get_keyd_config(physmap): config = "" config += """[ids] k:0001:0001 @@ -98,12 +98,12 @@ def main(): parser.add_argument("-f", "--file", default="cros.conf", help="path to save config (default: cros.conf)") args = vars(parser.parse_args()) - physmap = load_physmap_data() + physmap = get_physmap_data() if not physmap: print("no function row mapping found, using default mapping") physmap = ['EA', 'E9', 'E7', '91', '92', '94', '95', 'A0', 'AE', 'B0'] - config = create_keyd_config(physmap) + config = get_keyd_config(physmap) with open(args["file"], "w") as conf: conf.write(config) -- cgit 1.4.1-2-gfad0 From 50d348cc2bb7272a29faef1587a0a4da35551bb7 Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 16:03:58 +0200 Subject: add get_functional_row and unify its code --- cros-keyboard-map.py | 58 ++++++++++++++++++++++------------------------------ 1 file changed, 25 insertions(+), 33 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 7a3dc41..58b1e6d 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -30,6 +30,27 @@ def get_physmap_data(): except FileNotFoundError: return "" +def get_functional_row(physmap, use_vivaldi, super_is_held): + i = 0 + result = "" + for scancode in physmap: + i += 1 + # Map zoom to f11 since most applications wont listen to zoom + mapping = "f11" if vivaldi_keys[scancode] == "zoom" \ + else vivaldi_keys[scancode] + + match [super_is_held, use_vivaldi]: + case [True, True]: + result += f"{vivaldi_keys[scancode]} = f{i}\n" + case [True, False]: + result += f"f{i} = f{i}\n" + case [False, True]: + result += f"{vivaldi_keys[scancode]} = {mapping}\n" + case [False, False]: + result += f"f{i} = {mapping}\n" + + return result + def get_keyd_config(physmap): config = "" config += """[ids] @@ -38,44 +59,15 @@ k:0000:0000 [main] """ - # make fn keys act like vivaldi keys when super isn't held - i = 0 - for scancode in physmap: - i += 1 - # Map zoom to f11 since most applications wont listen to zoom - if vivaldi_keys[scancode] == "zoom": - mapping = "f11" - else: - mapping = vivaldi_keys[scancode] - config += f"f{i} = {mapping}\n" + config += get_functional_row(physmap, use_vivaldi=False, super_is_held=False) config += "\n" - - # make vivaldi keys act like vivaldi keys when super isn't held - for scancode in physmap: - # Map zoom to f11 since most applications wont listen to zoom - if vivaldi_keys[scancode] == "zoom": - mapping = "f11" - else: - mapping = vivaldi_keys[scancode] - config += f"{vivaldi_keys[scancode]} = {mapping}\n" - + config += get_functional_row(physmap, use_vivaldi=True, super_is_held=False) # map lock button to coffee config += "\nf13=coffee\nsleep=coffee\n" - - # make fn keys act like fn keys when super is held - i = 0 config += "\n[meta]\n" - for scancode in physmap: - i += 1 - config += f"f{i} = f{i}\n" - - # make vivaldi keys act like like fn keys when super is held - i = 0 + config += get_functional_row(physmap, use_vivaldi=False, super_is_held=True) config += "\n" - for scancode in physmap: - i += 1 - config += f"{vivaldi_keys[scancode]} = f{i}\n" - + config += get_functional_row(physmap, use_vivaldi=True, super_is_held=True) # Add various extra shortcuts config += """\n[alt] backspace = delete -- cgit 1.4.1-2-gfad0 From c67121a40bb583a0e0f2e03927b712876400b0dd Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 17:10:19 +0200 Subject: add --inverted argument --- cros-keyboard-map.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 58b1e6d..55ef1ba 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -30,7 +30,7 @@ def get_physmap_data(): except FileNotFoundError: return "" -def get_functional_row(physmap, use_vivaldi, super_is_held): +def get_functional_row(physmap, use_vivaldi, super_is_held, super_inverted): i = 0 result = "" for scancode in physmap: @@ -39,19 +39,19 @@ def get_functional_row(physmap, use_vivaldi, super_is_held): mapping = "f11" if vivaldi_keys[scancode] == "zoom" \ else vivaldi_keys[scancode] - match [super_is_held, use_vivaldi]: - case [True, True]: + match [super_is_held, use_vivaldi, super_inverted]: + case [True, True, False] | [False, True, True]: result += f"{vivaldi_keys[scancode]} = f{i}\n" - case [True, False]: + case [True, False, False] | [False, False, True]: result += f"f{i} = f{i}\n" - case [False, True]: + case [False, True, False] | [True, True, True]: result += f"{vivaldi_keys[scancode]} = {mapping}\n" - case [False, False]: + case [False, False, False] | [True, False, True]: result += f"f{i} = {mapping}\n" return result -def get_keyd_config(physmap): +def get_keyd_config(physmap, inverted): config = "" config += """[ids] k:0001:0001 @@ -59,15 +59,15 @@ k:0000:0000 [main] """ - config += get_functional_row(physmap, use_vivaldi=False, super_is_held=False) + config += get_functional_row(physmap, use_vivaldi=False, super_is_held=False, super_inverted=inverted) config += "\n" - config += get_functional_row(physmap, use_vivaldi=True, super_is_held=False) + config += get_functional_row(physmap, use_vivaldi=True, super_is_held=False, super_inverted=inverted) # map lock button to coffee config += "\nf13=coffee\nsleep=coffee\n" config += "\n[meta]\n" - config += get_functional_row(physmap, use_vivaldi=False, super_is_held=True) + config += get_functional_row(physmap, use_vivaldi=False, super_is_held=True, super_inverted=inverted) config += "\n" - config += get_functional_row(physmap, use_vivaldi=True, super_is_held=True) + config += get_functional_row(physmap, use_vivaldi=True, super_is_held=True, super_inverted=inverted) # Add various extra shortcuts config += """\n[alt] backspace = delete @@ -88,6 +88,8 @@ backspace = C-A-delete""" def main(): parser = argparse.ArgumentParser() parser.add_argument("-f", "--file", default="cros.conf", help="path to save config (default: cros.conf)") + parser.add_argument("-i", "--inverted", action="store_true", + help="use functional keys by default and media keys when super is held") args = vars(parser.parse_args()) physmap = get_physmap_data() @@ -95,7 +97,7 @@ def main(): print("no function row mapping found, using default mapping") physmap = ['EA', 'E9', 'E7', '91', '92', '94', '95', 'A0', 'AE', 'B0'] - config = get_keyd_config(physmap) + config = get_keyd_config(physmap, args["inverted"]) with open(args["file"], "w") as conf: conf.write(config) -- cgit 1.4.1-2-gfad0 From 35011d1c11b228debffd31692e29ef9e1a0d3ab2 Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 17:26:55 +0200 Subject: use f-string in get_keyd_config --- cros-keyboard-map.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 55ef1ba..68453b6 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -52,24 +52,22 @@ def get_functional_row(physmap, use_vivaldi, super_is_held, super_inverted): return result def get_keyd_config(physmap, inverted): - config = "" - config += """[ids] + config = f"""\ +[ids] k:0001:0001 k:0000:0000 [main] -""" - config += get_functional_row(physmap, use_vivaldi=False, super_is_held=False, super_inverted=inverted) - config += "\n" - config += get_functional_row(physmap, use_vivaldi=True, super_is_held=False, super_inverted=inverted) - # map lock button to coffee - config += "\nf13=coffee\nsleep=coffee\n" - config += "\n[meta]\n" - config += get_functional_row(physmap, use_vivaldi=False, super_is_held=True, super_inverted=inverted) - config += "\n" - config += get_functional_row(physmap, use_vivaldi=True, super_is_held=True, super_inverted=inverted) - # Add various extra shortcuts - config += """\n[alt] +{get_functional_row(physmap, use_vivaldi=False, super_is_held=False, super_inverted=inverted)} +{get_functional_row(physmap, use_vivaldi=True, super_is_held=False, super_inverted=inverted)} +f13=coffee +sleep=coffee + +[meta] +{get_functional_row(physmap, use_vivaldi=False, super_is_held=True, super_inverted=inverted)} +{get_functional_row(physmap, use_vivaldi=True, super_is_held=True, super_inverted=inverted)} + +[alt] backspace = delete brightnessdown = kbdillumdown brightnessup = kbdillumup @@ -81,8 +79,8 @@ f5 = print scale = print [control+alt] -backspace = C-A-delete""" - +backspace = C-A-delete +""" return config def main(): -- cgit 1.4.1-2-gfad0 From c7f33275a8b4a3ed028e66c603f08509a1d70a7a Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 18:04:15 +0200 Subject: move ids to a list --- cros-keyboard-map.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 68453b6..67b4d1a 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -2,6 +2,11 @@ import argparse +device_ids = { + "k:0000:0000", # cros_ec keyboard + "k:0001:0001", # AT keyboard +} + vivaldi_keys = { "90": "previoussong", "91": "zoom", @@ -54,8 +59,7 @@ def get_functional_row(physmap, use_vivaldi, super_is_held, super_inverted): def get_keyd_config(physmap, inverted): config = f"""\ [ids] -k:0001:0001 -k:0000:0000 +{"\n".join(device_ids)} [main] {get_functional_row(physmap, use_vivaldi=False, super_is_held=False, super_inverted=inverted)} -- cgit 1.4.1-2-gfad0 From fce88968c91eb45f1175794dd89700a13e445d98 Mon Sep 17 00:00:00 2001 From: Anton Bambura Date: Mon, 12 Feb 2024 18:04:26 +0200 Subject: add support for katsu --- cros-keyboard-map.py | 1 + 1 file changed, 1 insertion(+) (limited to 'cros-keyboard-map.py') diff --git a/cros-keyboard-map.py b/cros-keyboard-map.py index 67b4d1a..e22c65e 100755 --- a/cros-keyboard-map.py +++ b/cros-keyboard-map.py @@ -5,6 +5,7 @@ import argparse device_ids = { "k:0000:0000", # cros_ec keyboard "k:0001:0001", # AT keyboard + "k:18d1:5050", # Google Inc. Hammer } vivaldi_keys = { -- cgit 1.4.1-2-gfad0