ruen=""
def ichange():
ruen=get_layout()
if ruen=="en" : kb.press_and_release('alt + shift')
def istatus():
ruen=get_layout()
print (ruen)
области видимости, ruen внутри функции и ruen снаружи разные переменные
вот у тебя функция проверяет реестр, на выходе либо ‘ru’ либо ‘en’
def get_layout():
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
if hex(pf(0)) == '0x4190419':
return 'ru'
if hex(pf(0)) == '0x4090409':
return 'en'
вот у тебя функция,которая переключает раскладку
kb.press_and_release('alt + shift')
вот функция которая переводит в ‘ru’
def set_ru():
if get_layout() == 'en':
kb.press_and_release('alt + shift')
вот функция перевода в ‘en’
def set_en():
if get_layout() == 'ru':
kb.press_and_release('alt + shift')
вот тест
def test():
set_en()
print(get_layout())
set_ru()
print(get_layout())
set_ru()
print(get_layout())
set_en()
print(get_layout())
вот целиком
import ctypes
import keyboard as kb
def get_layout():
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
if hex(pf(0)) == '0x4190419':
return 'ru'
if hex(pf(0)) == '0x4090409':
return 'en'
def set_ru():
if get_layout() == 'en':
kb.press_and_release('alt + shift')
def set_en():
if get_layout() == 'ru':
kb.press_and_release('alt + shift')
def test():
set_en()
print(get_layout())
set_ru()
print(get_layout())
set_ru()
print(get_layout())
set_en()
print(get_layout())
test()
или вот
import subprocess
import pyautogui as p
def get_layout():
try:
import ctypes # windows
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
if hex(pf(0)) == '0x4190419':
return 'ru'
if hex(pf(0)) == '0x4090409':
return 'en'
except: # linux
pr = subprocess.Popen("xset -q|grep LED| awk '{ print $10 }'", stdout=subprocess.PIPE, shell=True)
data = pr.communicate()[0].decode().strip()
if data == '00001004':
return "ru"
if data == '00000000':
return "en"
def set_ru():
if get_layout() == 'en':
p.hotkey('shift', 'alt')
def set_en():
if get_layout() == 'ru':
p.hotkey('shift', 'alt')
def test():
set_en()
print(get_layout())
set_ru()
print(get_layout())
set_ru()
print(get_layout())
set_en()
print(get_layout())
set_en()
print(get_layout())
test()