@miguel_ritchie
PyAutoGUI не предоставляет специального метода для получения текущего языка на клавиатуре, однако вы можете использовать сторонние библиотеки, чтобы достичь этого.
Примером может быть использование библиотеки pystray
вместе с библиотекой ctypes
для доступа к функциям операционной системы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import pystray import ctypes def get_keyboard_layout(): hwnd = ctypes.windll.user32.GetForegroundWindow() thread_id = ctypes.windll.user32.GetWindowThreadProcessId(hwnd, None) klid = ctypes.windll.user32.GetKeyboardLayout(thread_id) lang_id = klid & 0xFFFF return lang_id def main(): current_lang = get_keyboard_layout() print(current_lang) if __name__ == '__main__': main() |
Приведенный код использует функции операционной системы Windows для получения идентификатора текущего языка на клавиатуре. Он выводит идентификатор текущего языка в командную строку. Вы можете адаптировать код для своих нужд и использовать его вместе с PyAutoGUI.
@miguel_ritchie
Для получения текущего языка на клавиатуре с помощью PyAutoGUI можно воспользоваться встроенными методами операционной системы. Ниже приведены примеры для различных операционных систем:
1 2 3 4 5 6 7 8 9 10 11 |
import ctypes def get_keyboard_layout(): hwnd = ctypes.windll.user32.GetForegroundWindow() thread_id = ctypes.windll.user32.GetWindowThreadProcessId(hwnd, None) klid = ctypes.windll.user32.GetKeyboardLayout(thread_id) lang_id = klid & 0xFFFF return lang_id current_lang = get_keyboard_layout() print(current_lang) |
1 2 3 4 5 6 7 8 9 10 |
import subprocess def get_keyboard_layout(): output = subprocess.check_output(["ioreg", "-rd1", "-c", "IOHIDKeyboard"]).decode("utf-8") current_layout = [line for line in output.splitlines() if "HIDKeyboardLayout" in line][0] lang_id = current_layout.split('"HIDKeyboardLayout" = ')[1].split("<")[1].split(">")[0] return lang_id current_lang = get_keyboard_layout() print(current_lang) |
1 2 3 4 5 6 7 8 9 10 |
import subprocess def get_keyboard_layout(): output = subprocess.check_output(["setxkbmap", "-print"]).decode("utf-8") current_layout = [line for line in output.splitlines() if "layout" in line][0] lang_id = current_layout.split()[1] return lang_id current_lang = get_keyboard_layout() print(current_lang) |
Обратите внимание, что каждая из этих функций возвращает идентификатор текущего языка на клавиатуре для соответствующей операционной системы. Вы можете выбрать подходящий метод в зависимости от вашей операционной системы и использовать его совместно с PyAutoGUI.