update dotool wrapper to use keyd layout output

This commit is contained in:
Joel Beckmeyer 2024-11-13 13:17:22 -05:00
parent fe9f18c43d
commit 70ec6f36da
2 changed files with 6 additions and 32 deletions

View File

@ -1,2 +1,7 @@
#!/bin/sh #!/bin/sh
DOTOOL_XKB_LAYOUT=us DOTOOL_XKB_VARIANT=$(get_plasma_keyboard_layout) /usr/bin/dotool "$@"
current_layer=$(timeout 0.1s keyd listen | grep -m 1 '^/' | sed 's/^\///')
if [ "$current_layer" = "qwerty" ]; then
current_layer="basic"
fi
DOTOOL_XKB_LAYOUT=us DOTOOL_XKB_VARIANT=$current_layer /usr/bin/dotool "$@"

View File

@ -1,31 +0,0 @@
#!/usr/bin/env python3
import dbus
def get_keyboard_info():
bus = dbus.SessionBus()
keyboard = bus.get_object('org.kde.keyboard', '/Layouts')
keyboard_interface = dbus.Interface(keyboard, dbus_interface='org.kde.KeyboardLayouts')
layouts_list = keyboard_interface.getLayoutsList()
current_layout_index = keyboard_interface.getLayout()
return layouts_list, current_layout_index
def set_keyboard_layout_env(layouts_list, current_layout_index):
current_layout = layouts_list[current_layout_index]
_, _, name = current_layout
if "Dvorak" in name:
keyboard_layout = "dvorak"
elif "US" in name:
keyboard_layout = "basic"
else:
keyboard_layout = "unknown"
return keyboard_layout
if __name__ == "__main__":
layouts_list, current_layout_index = get_keyboard_info()
keyboard_layout = set_keyboard_layout_env(layouts_list, current_layout_index)
print(keyboard_layout)