@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.