Найти - Пользователи
Полная версия: как узнать раскладку клавиатуры?
Начало » Python для экспертов » как узнать раскладку клавиатуры?
1
hellslade
пробовал использовать win32api.GetKeyboardState(), так она возвращает какой-то бред…хотя win32api.GetKeyboardLayoutList() возвращает 2х эл-ный массив, видомо 2 раскладки. уже вроде где только не шарился, не могу найти(
hellt
LangRU = 419 ; константа для русского языка
LangEN = 409 ; константа для английского языка

далее идешь в реестр и смотришь что у него там по пути
HKEY_CURRENT_USER\Keyboard Layout\Preload
в параметрах 1 и 2
Andity
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.

hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
hellt
Andity
hellt
это константы, которые выдает стд ф-я GetKeyboardLayoutList() в Си.
Python-реализация GetKeyboardLayoutList() выдает другие константы.

hellslade
методом тыка было определено, что win32api.GetKeyboardLayoutList() возвращает:
67699721L - английский
68748313L - русский
понятно. просто не важно Си это константы или нет, в реестре они именно строкой представлены.
Согласен, метод с win32api.GetKeyboardLayoutList() куда проще
hellslade
)) это все конечно здОрово!
но вопрос не в том, чтобы узнать какие языки установлены у юзера, а в том чтобы определить текущую раскладку клавиатуры.
т.е. я должен узнать какой текущий язык включен у пользователя
какие еще будут предложения?))
nobodyzzz
Andity
67699721L - английский
68748313L - русский
btw, в хексе эти два числа выглядят как 4090409 и 4190419 =)))
nobodyzzz
можно попробовать как-нубудь так
import ctypes
u = ctypes.windll.LoadLibrary("user32.dll")
pf = getattr(u, "GetKeyboardLayout")
print hex(pf(0))
hellslade
nobodyzzz
во, действительно, это работает!))спасиб
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB