Страница 1 из 1

Несколько раскладок клавиатуры

Добавлено: 30 Декабрь 2022, 21:12
finsoftrz
Вопрос тут возник. В архивах есть пример переключения ru/lat, используя ActivateKeyBoardLayout(1,0). Я им давно пользуюсь.
Если раскладок больше 2, то вроде надо использовать GetKeyboardLayoutList для получения их списка, а затем с ним работать. Но примеров на кларионе что-то не гуглится. А на сях и делфи как-то трудно понять. Никто не делал такое? Как обход можно перебирать раскладки ActivateKeyBoardLayout в цикле, но это как-то не совсем правильно выглядит.

Несколько раскладок клавиатуры

Добавлено: 31 Декабрь 2022, 0:59
finsoftrz
Вот такой код работает при нескольких раскладка. В параметре KBDLayout передается кодовое значение раскладки (например, "00000409" для английской).

Код: Выделить всё

SwitchKBD            PROCEDURE (STRING KBDLayout)
NewKL  UNSIGNED
CurKL  CSTRING(20)

  CODE 
         Err# = GetKeyboardLayoutNameA(CurKL)
         IF Err#<>0 and CurKL <> KBDLayout
            CurKL = KBDLayout
            LoadKeyboardLayoutA(CurKL,1)
            NewKL = ActivateKeyBoardLayout(CurKL,0)            
         END
Прототипы.

Код: Выделить всё

  MODULE('Windows.lib')
      ActivateKeyboardLayout(UNSIGNED,UNSIGNED),UNSIGNED,PASCAL
      GetKeyboardLayoutNameA(*CSTRING),SIGNED,PASCAL,RAW
      LoadKeyboardLayoutA(*CSTRING,SIGNED),PASCAL,RAW
   end

Несколько раскладок клавиатуры

Добавлено: 31 Декабрь 2022, 16:00
kreator
Прототипы в стандартном 'WINAPI'.