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

Автопереключение раскладки

Добавлено: 28 Март 2014, 16:25
Андрей
Прошу прощения если уже было, тогда пошлите на.... ссылочку
Как автоматически переключать с РУС на ENG при переходе в определенное поле и переключать наоборот при выходе с него ?

Re: Автопереключение раскладки

Добавлено: 28 Март 2014, 16:29
Андрей
Необязательно переключать раскладку, может быть перехватывать нажатия клавиш и преобразовывать каждый символ на лету ?

Re: Автопереключение раскладки

Добавлено: 28 Март 2014, 20:31
Дед Пахом
переключение реализуется с помощью WinAPI LoadKeyboardLayout(), ActivateKeyboardLayout(), UnloadKeyboardLayout()

Re: Автопереключение раскладки

Добавлено: 30 Март 2014, 21:21
Андрей
Спасибо !

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 10:10
kreator
Давным-давно выкладывали пример и удобную функцию.
Описание Win-API функций:

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

    GetKeyboardLayout(DWORD),HKL,pascal
    GetKeyboardLayoutNameA(*LPSTR),BOOL,pascal,raw
Функция переключения:

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

HKL                     EQUATE(UNSIGNED)

SwitchKBD Procedure (KBDLayout)
AKL  HKL
TMP  CSTRING(20)
loc:i Long

 Code
 loc:i = GetKeyboardLayoutNameA(Tmp)
 if Tmp<>KBDLayout
   AKL = ActivateKeyBoardLayout(1,0)
 end
Пример использования:

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

case field()
  of ?COU:NameLat
  orof ?COU:FullNameLat
    SwitchKBD(Latin)
  else
    SwitchKBD(Russian)
end

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 10:41
Андрей
А еще бы выложили раздел Global Includes

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 13:15
kreator
Вот это имеется ввиду:

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

Latin    CSTRING('00000409')
Russian  CSTRING('00000419')
HKL        EQUATE(UNSIGNED)
Или что?

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 13:51
Андрей
Наверно еще не хватает описания
ActivateKeyBoardLayout ?

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 14:04
kreator
Сорри.

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

    ActivateKeyboardLayout(HKL,UNSIGNED),HKL,pascal

Re: Автопереключение раскладки

Добавлено: 31 Март 2014, 22:20
Андрей
Спасибо !