\ File: kbd_layout.spf \ Date: 10.12.2003 \ Author: Nicholas Nemtsev \ Description: Retrieves the active keyboard layout for a \ specified thread (only for GUI applications). \ This allows you to check if specific layout \ is active. Note, please: this plugin does \ not works with console windows. \ New words: CUR-KBLT \ WIN-KBLT \ ARA? \ CAT? \ CHT? etc.. 0 [IF] \ this is a comment string Example: #( test_kblt NoActive Action: START-APP: notepad.exe PAUSE: 2000 WIN-ACTIVATE: "*notepad" RUS? IF MSG: "Russian keyboard layout" ELSE ENU? IF MSG: "English keyboard layout" ELSE MSG: "Keyboard layout: %CUR-KBLT%" THEN THEN )# #( test_win_kblt NoActive Action: \ printing active keyboard layout \ for specified window to console 0x101EA WIN-KBLT . CR )# #( test_cur_kblt NoActive Action: \ printing active keyboard layout \ for a window that is currently active CUR-KBLT . CR )# [THEN] \ this is a comment string \ returns the active keyboard layout for a \ specified window (by it's window handle) : WIN-KBLT ( hwnd -- ) 0 SWAP GetWindowThreadProcessId GetKeyboardLayout 0xFFFF AND ; \ returns the active keyboard layout for a \ currently active window : CUR-KBLT GetForegroundWindow WIN-KBLT ; \ available keyboard layouts 0x401 CONSTANT ARA \ 1025 Arabic (Saudi Arabia) 0x403 CONSTANT CAT \ 1027 Catalan (Spain) 0x404 CONSTANT CHT \ 1028 Chinese (Taiwan) 0x804 CONSTANT CHS \ 2052 Chinese (People's Republic of China) 0x405 CONSTANT CSY \ 1029 Czech (Czech Republic) 0x406 CONSTANT DAN \ 1030 Danish (Denmark) 0x407 CONSTANT DEU \ 1031 German (Germany) 0x408 CONSTANT ELL \ 1032 Greek (Greece) 0x409 CONSTANT ENU \ 1033 English (United States) 0xC0A CONSTANT ESN \ 3082 Spanish - Modern Sort (Spain) 0x425 CONSTANT ETI \ 1061 Estonian (Available with Windows Installer version 2.0 or later.) 0x40B CONSTANT FIN \ 1035 Finnish (Finland) 0x40C CONSTANT FRA \ 1036 French (France) 0x40D CONSTANT HEB \ 1037 Hebrew (Israel) 0x40E CONSTANT HUN \ 1038 Hungarian (Hungary) 0x410 CONSTANT ITA \ 1040 Italian (Italy) 0x411 CONSTANT JPN \ 1041 Japanese (Japan) 0x412 CONSTANT KOR \ 1042 Korean (Korea) 0x427 CONSTANT LTH \ 1063 Lithuanian (Available with Windows Installer version 2.0 or later.) 0x426 CONSTANT LVI \ 1062 Latvian (Available with Windows Installer version 2.0 or later.) 0x413 CONSTANT NLD \ 1043 Dutch (Netherlands) 0x414 CONSTANT NOR \ 1044 Norwegian (Bokmеl) (Norway) 0x415 CONSTANT PLK \ 1045 Polish (Poland) 0x416 CONSTANT PTB \ 1046 Portuguese (Brazil) 0x816 CONSTANT PTG \ 2070 Portuguese (Portugal) 0x418 CONSTANT ROM \ 1048 Romanian (Romania) 0x419 CONSTANT RUS \ 1049 Russian (Russia) 0x41A CONSTANT HRV \ 1050 Croatian (Croatia) 0x41B CONSTANT SKY \ 1051 Slovak (Slovakia) 0x41D CONSTANT SVE \ 1053 Swedish (Sweden) 0x41E CONSTANT THA \ 1054 Thai (Thailand) 0x41F CONSTANT TRK \ 1055 Turkish (Turkey) 0x424 CONSTANT SLV \ 1060 Slovenian (Slovenia) 0x42A CONSTANT VIT \ 1066 Vietnamese (Viet Nam) 0x42D CONSTANT EUQ \ 1069 Basque (Spain) \ words for checking if specific keyboard layout is active : ARA? CUR-KBLT ARA = ; : CAT? CUR-KBLT CAT = ; : CHT? CUR-KBLT CHT = ; : CHS? CUR-KBLT CHS = ; : CSY? CUR-KBLT CSY = ; : DAN? CUR-KBLT DAN = ; : DEU? CUR-KBLT DEU = ; : ELL? CUR-KBLT ELL = ; : ENU? CUR-KBLT ENU = ; : ESN? CUR-KBLT ESN = ; : ETI? CUR-KBLT ETI = ; : FIN? CUR-KBLT FIN = ; : FRA? CUR-KBLT FRA = ; : HEB? CUR-KBLT HEB = ; : HUN? CUR-KBLT HUN = ; : ITA? CUR-KBLT ITA = ; : JPN? CUR-KBLT JPN = ; : KOR? CUR-KBLT KOR = ; : LTH? CUR-KBLT LTH = ; : LVI? CUR-KBLT LVI = ; : NLD? CUR-KBLT NLD = ; : NOR? CUR-KBLT NOR = ; : PLK? CUR-KBLT PLK = ; : PTB? CUR-KBLT PTB = ; : PTG? CUR-KBLT PTG = ; : ROM? CUR-KBLT ROM = ; : RUS? CUR-KBLT RUS = ; : HRV? CUR-KBLT HRV = ; : SKY? CUR-KBLT SKY = ; : SVE? CUR-KBLT SVE = ; : THA? CUR-KBLT THA = ; : TRK? CUR-KBLT TRK = ; : SLV? CUR-KBLT SLV = ; : VIT? CUR-KBLT VIT = ; : EUQ? CUR-KBLT EUQ = ;