#python #linux
Собственно как это делать на Windows в интернете решение есть, но вот как сменить на linux ?
Ответы
Ответ 1
Проблема с Linux заключается в том, что существует довольно большое множество всевозможных переключателей раскладок и для разных устройств раскладка переключается по-разному. Вот, например, вызов такой команды из терминала приводит к включению раскладки Эсперанто у меня в GNOME с Unity. dconf write /org/gnome/desktop/input-sources/current 'uint32 2' Точнее говоря, это приводит к установке в качестве текущего источника ввода третьего по счёту (если считать с 1). А сам список этих источников можно получить вот такой командой. dconf read /org/gnome/desktop/input-sources/sources Напечатает: [('xkb', 'us'), ('xkb', 'ru'), ('xkb', 'epo'), ('xkb', 'ua')] В системе используются четыре раскладки. Таким образом, для переключения текущей раскладки алгоритм такой: Прочитать и запомнить значение ключа /org/gnome/desktop/input-sources/current. Прочитать значение ключа /org/gnome/desktop/input-sources/sources, чтобы выяснить количество используемых источников ввода (т.е раскладок). Затем прибавить единицу к номеру текущей раскладки по модулю количества раскладок. Записать полученное значение в ключ /org/gnome/desktop/input-sources/current. Насколько я понял, интерфейса для взаимодействия с БД dconf чисто через Python нету, поэтому придётся вызывать упомянутую выше консольную утилиту и разбирать её вывод. Впрочем, это уже отдельная тема.Ответ 2
Вот я тормоз...Если xdo.Xdo().send_keysequence_window(xdo.CURRENTWINDOW, b"alt+shift") не работает и если я уже пользуюсь pyautogui,то неужели было трудно додуматься до такого ??? import pyautogui as pikapika #pip install pyautogui pikapika.hotkey('shift', 'alt')Ответ 3
Среди множества множества вариантов, можно попробовать python-libxdo: import xdo # $ pip install python-libxdo xdo.Xdo().send_keysequence_window(xdo.CURRENTWINDOW, b"super+space") Это выполняет аналог консольной команды xdotool: $ xdotool key super+space Super + Space клавиши меняют раскладку на моей машине. В другом контексте что-то другое может работать.
Комментариев нет:
Отправить комментарий