Reactos

[KBSWITCH] Handle IME Menu default items (#8101)

Finishing IME menu work. The IME menu of the system
pen icon has to append the default items if DMI_LEFT and
RDMI_RIGHT are not specified.
JIRA issue: CORE-20142
- Add IsRegImeToolbarShown and ShowImeToolbar
helper functions.
- Add more code into KbSwitch_OnPenIconMsg function
to handle IME menu default items.
- Add some resource strings.

authored by

Katayama Hirofumi MZ and committed by
GitHub
47421293 70732b0c

+408 -21
-3
base/applications/kbswitch/indicdll/indicdll.c
··· 43 43 case HCBT_ACTIVATE: 44 44 case HCBT_SETFOCUS: 45 45 { 46 - OutputDebugStringA("HCBT_ACTIVATE / HCBT_SETFOCUS\n"); 47 46 HWND hwndFocus = (HWND)wParam; 48 47 if (hwndFocus && hwndFocus != g_pShared->hKbSwitchWnd) 49 48 PostMessageToMainWnd(WM_WINDOW_ACTIVATE, (WPARAM)hwndFocus, 0); ··· 64 63 { 65 64 case HSHELL_WINDOWACTIVATED: 66 65 { 67 - OutputDebugStringA("HSHELL_WINDOWACTIVATED\n"); 68 66 PostMessageToMainWnd(WM_WINDOW_ACTIVATE, wParam, 0); 69 67 break; 70 68 } 71 69 case HSHELL_LANGUAGE: 72 70 { 73 - OutputDebugStringA("HSHELL_LANGUAGE\n"); 74 71 PostMessageToMainWnd(WM_LANG_CHANGED, wParam, lParam); 75 72 break; 76 73 }
+144 -16
base/applications/kbswitch/kbswitch.c
··· 41 41 #define TIMER_ID_LANG_CHANGED_DELAYED 0x10000 42 42 #define TIMER_LANG_CHANGED_DELAY 200 43 43 44 + #define IME_HKL_MASK 0xF000FFFF 45 + #define IS_KOREAN_IME_HKL(hKL) ((HandleToUlong(hKL) & IME_HKL_MASK) == 0xE0000412) 46 + 44 47 #define MAX_KLS 64 45 48 46 49 typedef BOOL (APIENTRY *FN_KbSwitchSetHooks)(BOOL bDoHook); ··· 189 192 { 190 193 /* FIXME: Get correct console window's HKL when console window */ 191 194 HWND hwndTarget = GetTargetWindow(NULL); 192 - ERR("hwndTarget: %p\n", hwndTarget); 195 + TRACE("hwndTarget: %p\n", hwndTarget); 193 196 DWORD dwTID = GetWindowThreadProcessId(hwndTarget, NULL); 194 197 return GetKeyboardLayout(dwTID); 195 198 } ··· 490 493 DWORD dwImeStatus = GetImeStatus(hwndTarget); 491 494 492 495 INT nIconID = -1; 493 - if ((HandleToUlong(hKL) & 0xF000FFFF) == 0xE0000412) // Special Korean IME 496 + if (IS_KOREAN_IME_HKL(hKL)) // Korean IME? 494 497 { 495 498 if (dwImeStatus != IME_STATUS_NO_IME) 496 499 { ··· 1015 1018 PostMessage(hwnd, WM_COMMAND, nID, 0); 1016 1019 } 1017 1020 1021 + static BOOL 1022 + IsRegImeToolbarShown(VOID) 1023 + { 1024 + HKEY hKey; 1025 + LSTATUS error = RegOpenKey(HKEY_CURRENT_USER, TEXT("Control Panel\\Input Method"), &hKey); 1026 + if (error) 1027 + { 1028 + ERR("Cannot open regkey: 0x%lX\n", error); 1029 + return TRUE; 1030 + } 1031 + 1032 + WCHAR szText[8]; 1033 + DWORD cbValue = sizeof(szText); 1034 + error = RegQueryValueEx(hKey, TEXT("Show Status"), NULL, NULL, (PBYTE)szText, &cbValue); 1035 + if (error) 1036 + { 1037 + RegCloseKey(hKey); 1038 + return TRUE; 1039 + } 1040 + 1041 + BOOL ret = !!_wtoi(szText); 1042 + RegCloseKey(hKey); 1043 + return ret; 1044 + } 1045 + 1046 + static VOID 1047 + ShowImeToolbar(HWND hwndTarget, BOOL bShowToolbar) 1048 + { 1049 + HKEY hKey; 1050 + LSTATUS error = RegOpenKey(HKEY_CURRENT_USER, TEXT("Control Panel\\Input Method"), &hKey); 1051 + if (error) 1052 + { 1053 + ERR("Cannot open regkey: 0x%lX\n", error); 1054 + return; 1055 + } 1056 + 1057 + WCHAR szText[8]; 1058 + StringCchPrintf(szText, _countof(szText), TEXT("%d"), bShowToolbar); 1059 + 1060 + DWORD cbValue = (lstrlen(szText) + 1) * sizeof(TCHAR); 1061 + RegSetValueEx(hKey, TEXT("Show Status"), 0, REG_SZ, (PBYTE)szText, cbValue); 1062 + RegCloseKey(hKey); 1063 + 1064 + HWND hwndIme = ImmGetDefaultIMEWnd(hwndTarget); 1065 + PostMessage(hwndIme, WM_IME_SYSTEM, IMS_NOTIFYIMESHOW, bShowToolbar); 1066 + } 1067 + 1018 1068 // WM_PENICONMSG 1019 1069 static VOID 1020 1070 KbSwitch_OnPenIconMsg(HWND hwnd, UINT uMouseMsg) ··· 1028 1078 POINT pt; 1029 1079 GetCursorPos(&pt); 1030 1080 1031 - ERR("g_hwndLastActive: %p\n", g_hwndLastActive); 1081 + // Get target window 1082 + TRACE("g_hwndLastActive: %p\n", g_hwndLastActive); 1032 1083 HWND hwndTarget = GetTargetWindow(g_hwndLastActive); 1033 - ERR("hwndTarget: %p\n", hwndTarget); 1084 + TRACE("hwndTarget: %p\n", hwndTarget); 1034 1085 1086 + // Get default IME window 1035 1087 HWND hwndIme = ImmGetDefaultIMEWnd(hwndTarget); 1036 1088 if (!hwndIme) 1037 1089 { ··· 1039 1091 return; 1040 1092 } 1041 1093 1094 + // Get IME context from another process 1042 1095 HIMC hIMC = (HIMC)SendMessage(hwndIme, WM_IME_SYSTEM, IMS_GETCONTEXT, (LPARAM)hwndTarget); 1043 1096 if (!hIMC) 1044 1097 { ··· 1046 1099 return; 1047 1100 } 1048 1101 1102 + // Workaround of TrackPopupMenu's bug 1049 1103 SetForegroundWindow(hwnd); 1050 1104 1105 + // Create IME menu 1051 1106 BOOL bRightButton = (uMouseMsg == WM_RBUTTONUP); 1052 1107 PIMEMENUNODE pImeMenu = CreateImeMenu(hIMC, NULL, bRightButton); 1053 1108 HMENU hMenu = MenuFromImeMenu(pImeMenu); 1054 1109 1110 + HKL hKL = g_ahKLs[g_iKL]; 1111 + DWORD dwImeStatus = GetImeStatus(hwndTarget); 1112 + BOOL bImeOn = FALSE, bSoftOn = FALSE, bShowToolbar = FALSE; 1113 + TCHAR szText[128]; 1055 1114 if (bRightButton) 1056 1115 { 1057 - if (!(g_anFlags[g_iKL] & LAYOUTF_REMOVE_RIGHT_DEF_MENU)) 1116 + if (!(g_anFlags[g_iKL] & LAYOUTF_REMOVE_RIGHT_DEF_MENU)) // Add default menu items? 1058 1117 { 1059 - // FIXME: Add default menu items 1118 + if (GetMenuItemCount(hMenu)) 1119 + AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); // Separator 1120 + 1121 + // "Input System (IME) configuration..." 1122 + LoadString(g_hInst, IDS_INPUTSYSTEM, szText, _countof(szText)); 1123 + AppendMenu(hMenu, MF_STRING, ID_INPUTSYSTEM, szText); 1060 1124 } 1061 1125 } 1062 1126 else 1063 1127 { 1064 - if (!(g_anFlags[g_iKL] & LAYOUTF_REMOVE_LEFT_DEF_MENU)) 1128 + if (!(g_anFlags[g_iKL] & LAYOUTF_REMOVE_LEFT_DEF_MENU)) // Add default menu items? 1065 1129 { 1066 - // FIXME: Add default menu items 1130 + if (GetMenuItemCount(hMenu)) 1131 + AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); // Separator 1132 + 1133 + if (!IS_KOREAN_IME_HKL(hKL)) // Not Korean IME? 1134 + { 1135 + // "IME ON / OFF" 1136 + bImeOn = (dwImeStatus == IME_STATUS_IME_OPEN); 1137 + UINT nId = (bImeOn ? IDS_IME_ON : IDS_IME_OFF); 1138 + LoadString(g_hInst, nId, szText, _countof(szText)); 1139 + AppendMenu(hMenu, MF_STRING, ID_IMEONOFF, szText); 1140 + } 1141 + 1142 + if ((ImmGetProperty(hKL, IGP_CONVERSION) & IME_CMODE_SOFTKBD) && 1143 + IsWindow(hwndIme)) // Is Soft Keyboard available? 1144 + { 1145 + // "Soft Keyboard ON / OFF" 1146 + bSoftOn = (SendMessage(hwndIme, WM_IME_SYSTEM, IMS_GETCONVSTATUS, 0) & IME_CMODE_SOFTKBD); 1147 + UINT nId = (bSoftOn ? IDS_SOFTKBD_ON : IDS_SOFTKBD_OFF); 1148 + LoadString(g_hInst, nId, szText, _countof(szText)); 1149 + AppendMenu(hMenu, MF_STRING, ID_SOFTKBDONOFF, szText); 1150 + } 1151 + 1152 + if (GetMenuItemCount(hMenu)) 1153 + AppendMenu(hMenu, MF_SEPARATOR, 0, NULL); // Separator 1154 + 1155 + // "Show toolbar" 1156 + LoadString(g_hInst, IDS_SHOWTOOLBAR, szText, _countof(szText)); 1157 + AppendMenu(hMenu, MF_STRING, ID_SHOWTOOLBAR, szText); 1158 + bShowToolbar = IsRegImeToolbarShown(); 1159 + if (bShowToolbar) 1160 + CheckMenuItem(hMenu, ID_SHOWTOOLBAR, MF_CHECKED); 1067 1161 } 1068 1162 } 1069 1163 1164 + if (!GetMenuItemCount(hMenu)) // No items? 1165 + { 1166 + // Clean up 1167 + DestroyMenu(hMenu); 1168 + CleanupImeMenus(); 1169 + 1170 + SetForegroundWindow(hwndTarget); 1171 + return; 1172 + } 1173 + 1174 + // TrackPopupMenuEx flags 1070 1175 UINT uFlags = TPM_VERTICAL | TPM_RIGHTALIGN | TPM_RETURNCMD; 1071 1176 uFlags |= (bRightButton ? TPM_RIGHTBUTTON : TPM_LEFTBUTTON); 1072 1177 1178 + // Exclude the notification area 1073 1179 TPMPARAMS params = { sizeof(params) }; 1074 1180 GetWindowRect(g_hTrayNotifyWnd, &params.rcExclude); 1075 1181 1182 + // Show the popup menu 1076 1183 INT nID = TrackPopupMenuEx(hMenu, uFlags, pt.x, pt.y, hwnd, &params); 1077 1184 1185 + // Workaround of TrackPopupMenu's bug 1078 1186 PostMessage(hwnd, WM_NULL, 0, 0); 1079 1187 1080 - if (nID) 1188 + if (nID) // Action! 1081 1189 { 1082 - if (nID >= ID_STARTIMEMENU) 1190 + if (nID >= ID_STARTIMEMENU) // IME internal menu ID? 1083 1191 { 1084 1192 MENUITEMINFO mii = { sizeof(mii), MIIM_DATA }; 1085 1193 GetMenuItemInfo(hMenu, nID, FALSE, &mii); ··· 1090 1198 if (SetPenMenuData) 1091 1199 SetPenMenuData(nID, mii.dwItemData); 1092 1200 1093 - if (IsWindow(hwndIme)) 1094 - SendMessage(hwndIme, WM_IME_SYSTEM, IMS_IMEMENUITEMSELECTED, (LPARAM)hwndTarget); 1201 + PostMessage(hwndIme, WM_IME_SYSTEM, IMS_IMEMENUITEMSELECTED, (LPARAM)hwndTarget); 1095 1202 } 1096 - else 1203 + else // Otherwise action of IME menu item 1097 1204 { 1098 - PostMessage(hwnd, WM_COMMAND, nID, 0); 1205 + switch (nID) 1206 + { 1207 + case ID_INPUTSYSTEM: 1208 + if (IS_IME_HKL(hKL)) 1209 + PostMessage(hwndIme, WM_IME_SYSTEM, IMS_CONFIGURE, (LPARAM)hKL); 1210 + break; 1211 + case ID_IMEONOFF: 1212 + ImmSetOpenStatus(hIMC, !bImeOn); 1213 + break; 1214 + case ID_SOFTKBDONOFF: 1215 + PostMessage(hwndIme, WM_IME_SYSTEM, IMS_SOFTKBDONOFF, !bSoftOn); 1216 + break; 1217 + case ID_SHOWTOOLBAR: 1218 + ShowImeToolbar(hwndTarget, !bShowToolbar); 1219 + break; 1220 + default: 1221 + { 1222 + PostMessage(hwnd, WM_COMMAND, nID, 0); 1223 + break; 1224 + } 1225 + } 1099 1226 } 1100 1227 } 1101 1228 1229 + // Clean up 1102 1230 DestroyMenu(hMenu); 1103 1231 CleanupImeMenus(); 1104 1232 ··· 1140 1268 } 1141 1269 } 1142 1270 1143 - // WM_LANG_CHANGED 1271 + // WM_LANG_CHANGED (HSHELL_LANGUAGE) 1144 1272 static LRESULT 1145 1273 KbSwitch_OnLangChanged(HWND hwnd, HWND hwndTarget OPTIONAL, HKL hKL OPTIONAL) 1146 1274 { ··· 1151 1279 return 0; 1152 1280 } 1153 1281 1154 - // WM_WINDOW_ACTIVATE 1282 + // WM_WINDOW_ACTIVATE (HCBT_ACTIVATE / HCBT_SETFOCUS / HSHELL_WINDOWACTIVATED) 1155 1283 static LRESULT 1156 1284 KbSwitch_OnWindowActivate(HWND hwnd, HWND hwndTarget OPTIONAL, LPARAM lParam OPTIONAL) 1157 1285 {
+10
base/applications/kbswitch/lang/bg-BG.rc
··· 9 9 MENUITEM "Из&ход", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/cs-CZ.rc
··· 14 14 MENUITEM "&Ukončit", ID_EXIT 15 15 END 16 16 END 17 + 18 + STRINGTABLE 19 + BEGIN 20 + IDS_IME_ON "Input System (IME) - ON" 21 + IDS_IME_OFF "Input System (IME) - OFF" 22 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 23 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 24 + IDS_SHOWTOOLBAR "Show Toolbar" 25 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 26 + END
+10
base/applications/kbswitch/lang/de-DE.rc
··· 9 9 MENUITEM "&Beenden", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/en-US.rc
··· 9 9 MENUITEM "E&xit", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/es-ES.rc
··· 9 9 MENUITEM "&Salir", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/et-EE.rc
··· 9 9 MENUITEM "V&älju", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/fr-FR.rc
··· 9 9 MENUITEM "Quitt&er", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/he-IL.rc
··· 9 9 MENUITEM "&יציאה", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/it-IT.rc
··· 9 9 MENUITEM "&Esci", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/ja-JP.rc
··· 9 9 MENUITEM "終了(&E)", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "入力システム (IME) - オン" 16 + IDS_IME_OFF "入力システム (IME) - オフ" 17 + IDS_SOFTKBD_ON "ソフト キーボード - オン" 18 + IDS_SOFTKBD_OFF "ソフト キーボード - オフ" 19 + IDS_SHOWTOOLBAR "ツールバーを表示する" 20 + IDS_INPUTSYSTEM "入力システム (IME) の設定..." 21 + END
+10
base/applications/kbswitch/lang/lt-LT.rc
··· 11 11 MENUITEM "&Baigti", ID_EXIT 12 12 END 13 13 END 14 + 15 + STRINGTABLE 16 + BEGIN 17 + IDS_IME_ON "Input System (IME) - ON" 18 + IDS_IME_OFF "Input System (IME) - OFF" 19 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 20 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 21 + IDS_SHOWTOOLBAR "Show Toolbar" 22 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 23 + END
+10
base/applications/kbswitch/lang/no-NO.rc
··· 9 9 MENUITEM "&Avslutt", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/pl-PL.rc
··· 17 17 MENUITEM "&Wyjście", ID_EXIT 18 18 END 19 19 END 20 + 21 + STRINGTABLE 22 + BEGIN 23 + IDS_IME_ON "Input System (IME) - ON" 24 + IDS_IME_OFF "Input System (IME) - OFF" 25 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 26 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 27 + IDS_SHOWTOOLBAR "Show Toolbar" 28 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 29 + END
+10
base/applications/kbswitch/lang/pt-BR.rc
··· 11 11 MENUITEM "&Sair", ID_EXIT 12 12 END 13 13 END 14 + 15 + STRINGTABLE 16 + BEGIN 17 + IDS_IME_ON "Input System (IME) - ON" 18 + IDS_IME_OFF "Input System (IME) - OFF" 19 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 20 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 21 + IDS_SHOWTOOLBAR "Show Toolbar" 22 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 23 + END
+10
base/applications/kbswitch/lang/pt-PT.rc
··· 16 16 MENUITEM "&Sair", ID_EXIT 17 17 END 18 18 END 19 + 20 + STRINGTABLE 21 + BEGIN 22 + IDS_IME_ON "Input System (IME) - ON" 23 + IDS_IME_OFF "Input System (IME) - OFF" 24 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 25 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 26 + IDS_SHOWTOOLBAR "Show Toolbar" 27 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 28 + END
+10
base/applications/kbswitch/lang/ro-RO.rc
··· 16 16 MENUITEM "I&eșire", ID_EXIT 17 17 END 18 18 END 19 + 20 + STRINGTABLE 21 + BEGIN 22 + IDS_IME_ON "Input System (IME) - ON" 23 + IDS_IME_OFF "Input System (IME) - OFF" 24 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 25 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 26 + IDS_SHOWTOOLBAR "Show Toolbar" 27 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 28 + END
+10
base/applications/kbswitch/lang/ru-RU.rc
··· 9 9 MENUITEM "&Выход", ID_EXIT 10 10 END 11 11 END 12 + 13 + STRINGTABLE 14 + BEGIN 15 + IDS_IME_ON "Input System (IME) - ON" 16 + IDS_IME_OFF "Input System (IME) - OFF" 17 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 18 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 19 + IDS_SHOWTOOLBAR "Show Toolbar" 20 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 21 + END
+10
base/applications/kbswitch/lang/sk-SK.rc
··· 13 13 MENUITEM "&Zavrieť", ID_EXIT 14 14 END 15 15 END 16 + 17 + STRINGTABLE 18 + BEGIN 19 + IDS_IME_ON "Input System (IME) - ON" 20 + IDS_IME_OFF "Input System (IME) - OFF" 21 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 22 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 23 + IDS_SHOWTOOLBAR "Show Toolbar" 24 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 25 + END
+10
base/applications/kbswitch/lang/sq-AL.rc
··· 13 13 MENUITEM "&Dil", ID_EXIT 14 14 END 15 15 END 16 + 17 + STRINGTABLE 18 + BEGIN 19 + IDS_IME_ON "Input System (IME) - ON" 20 + IDS_IME_OFF "Input System (IME) - OFF" 21 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 22 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 23 + IDS_SHOWTOOLBAR "Show Toolbar" 24 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 25 + END
+10
base/applications/kbswitch/lang/sv-SE.rc
··· 11 11 MENUITEM "&Avsluta", ID_EXIT 12 12 END 13 13 END 14 + 15 + STRINGTABLE 16 + BEGIN 17 + IDS_IME_ON "Input System (IME) - ON" 18 + IDS_IME_OFF "Input System (IME) - OFF" 19 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 20 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 21 + IDS_SHOWTOOLBAR "Show Toolbar" 22 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 23 + END
+10
base/applications/kbswitch/lang/tr-TR.rc
··· 11 11 MENUITEM "&Çıkış", ID_EXIT 12 12 END 13 13 END 14 + 15 + STRINGTABLE 16 + BEGIN 17 + IDS_IME_ON "Input System (IME) - ON" 18 + IDS_IME_OFF "Input System (IME) - OFF" 19 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 20 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 21 + IDS_SHOWTOOLBAR "Show Toolbar" 22 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 23 + END
+10
base/applications/kbswitch/lang/uk-UA.rc
··· 17 17 MENUITEM "В&ихід", ID_EXIT 18 18 END 19 19 END 20 + 21 + STRINGTABLE 22 + BEGIN 23 + IDS_IME_ON "Input System (IME) - ON" 24 + IDS_IME_OFF "Input System (IME) - OFF" 25 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 26 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 27 + IDS_SHOWTOOLBAR "Show Toolbar" 28 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 29 + END
+10
base/applications/kbswitch/lang/zh-CN.rc
··· 17 17 MENUITEM "退出(&E)", ID_EXIT 18 18 END 19 19 END 20 + 21 + STRINGTABLE 22 + BEGIN 23 + IDS_IME_ON "Input System (IME) - ON" 24 + IDS_IME_OFF "Input System (IME) - OFF" 25 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 26 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 27 + IDS_SHOWTOOLBAR "Show Toolbar" 28 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 29 + END
+10
base/applications/kbswitch/lang/zh-HK.rc
··· 17 17 MENUITEM "結束(&E)", ID_EXIT 18 18 END 19 19 END 20 + 21 + STRINGTABLE 22 + BEGIN 23 + IDS_IME_ON "Input System (IME) - ON" 24 + IDS_IME_OFF "Input System (IME) - OFF" 25 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 26 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 27 + IDS_SHOWTOOLBAR "Show Toolbar" 28 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 29 + END
+10
base/applications/kbswitch/lang/zh-TW.rc
··· 17 17 MENUITEM "結束(&E)", ID_EXIT 18 18 END 19 19 END 20 + 21 + STRINGTABLE 22 + BEGIN 23 + IDS_IME_ON "Input System (IME) - ON" 24 + IDS_IME_OFF "Input System (IME) - OFF" 25 + IDS_SOFTKBD_ON "Soft Keyboard - ON" 26 + IDS_SOFTKBD_OFF "Soft Keyboard - OFF" 27 + IDS_SHOWTOOLBAR "Show Toolbar" 28 + IDS_INPUTSYSTEM "Input System (IME) configuration..." 29 + END
+14 -2
base/applications/kbswitch/resource.h
··· 6 6 /* Menus */ 7 7 #define IDR_POPUP 100 8 8 9 + /* Strings */ 10 + #define IDS_IME_ON 300 11 + #define IDS_IME_OFF 301 12 + #define IDS_SOFTKBD_ON 302 13 + #define IDS_SOFTKBD_OFF 303 14 + #define IDS_SHOWTOOLBAR 304 15 + #define IDS_INPUTSYSTEM 305 16 + 9 17 /* Menu items */ 10 - #define ID_EXIT 100 18 + #define ID_EXIT 100 11 19 #define ID_PREFERENCES 101 12 - #define ID_LANG_BASE 1000 20 + #define ID_INPUTSYSTEM 252 21 + #define ID_IMEONOFF 500 22 + #define ID_SOFTKBDONOFF 501 23 + #define ID_SHOWTOOLBAR 502 24 + #define ID_LANG_BASE 1000