Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Смена раскладки на linux через python

#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 клавиши меняют раскладку на моей машине. В другом контексте что-то другое может работать.

Комментариев нет:

Отправить комментарий