Как узнать текущую раскладку клавиатуры?
На Delphi такой код работает:
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) = 67699721 then
//раскладка английская
begin
Label1.Caption:='Hello, world!';
end
else
//раскладка Не английская, например 68748313 соответствует русской
begin
Label1.Caption:='Привет, Мир!';
end;
А Lazarus ругается. Говорит:
Error: Identifier not found "GetKeyboardLayout"
Error: Identifier not found "GetWindowThreadProcessId"
Error: Identifier not found "GetForegroundWindow"
Как узнать текущую раскладку клавиатуры
Модератор: Модераторы
Kubanych
Может быть потому, что Вы забыли в строку Uses добавить модуль Windows?
Может быть потому, что Вы забыли в строку Uses добавить модуль Windows?
Спасибо!
Добавлено спустя 8 минут 29 секунд:
Работает, если запускать ехешник. А если из Lazarus запускать, то он самопризвольно меняет раскладку. Т.е. если была раскладка русская, то она меняет ее на английскую. После закрытия программы раскладка вновь становится русской.
Добавлено спустя 8 минут 29 секунд:
Работает, если запускать ехешник. А если из Lazarus запускать, то он самопризвольно меняет раскладку. Т.е. если была раскладка русская, то она меняет ее на английскую. После закрытия программы раскладка вновь становится русской.
Kubanych писал(а):А если из Lazarus запускать, то он самопризвольно меняет раскладку.
Так и должно быть.
а как узнать под Linux раскладку?
VirtUX писал(а):а как узнать под Linux раскладку?
И мне интересно.
VirtUX писал(а):а как узнать под Linux раскладку?
Ну и?????
Как это лучше сделать?
Есть у кого соображения?
читать про функции XkbGetState и XkbGetNames (устаревающие в связи с Wayland/Mir)
