534 lines
18 KiB
C
534 lines
18 KiB
C
//
|
|
// Include Files.
|
|
//
|
|
|
|
#ifndef INPUTDLG_H
|
|
#define INPUTDLG_H
|
|
|
|
|
|
#ifndef ARRAYSIZE
|
|
#define ARRAYSIZE(a) (sizeof(a)/sizeof((a)[0]))
|
|
#endif
|
|
|
|
|
|
//
|
|
// Constant Declarations.
|
|
//
|
|
|
|
#define US_LOCALE MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)
|
|
|
|
#define IS_DIRECT_SWITCH_HOTKEY(p) \
|
|
(((p) >= IME_HOTKEY_DSWITCH_FIRST) && \
|
|
((p) <= IME_HOTKEY_DSWITCH_LAST))
|
|
|
|
|
|
#define DESC_MAX MAX_PATH // max size of a description
|
|
#define ALLOCBLOCK 3 // # items added to block for alloc/realloc
|
|
#define HKL_LEN 9 // max # chars in hkl id + null
|
|
|
|
#define LIST_MARGIN 2 // for making the list box look good
|
|
|
|
#define MB_OK_OOPS (MB_OK | MB_ICONEXCLAMATION) // msg box flags
|
|
|
|
|
|
//
|
|
// wStatus bit pile.
|
|
//
|
|
#define LANG_ACTIVE 0x0001 // language is active
|
|
#define LANG_ORIGACTIVE 0x0002 // language was active to start with
|
|
#define LANG_CHANGED 0x0004 // user changed status of language
|
|
#define ICON_LOADED 0x0010 // icon read in from file
|
|
#define LANG_DEFAULT 0x0020 // current language
|
|
#define LANG_DEF_CHANGE 0x0040 // language default has changed
|
|
#define LANG_IME 0x0080 // IME
|
|
#define LANG_HOTKEY 0x0100 // a hotkey has been defined
|
|
#define LANG_UNLOAD 0x0200 // unload language
|
|
#define LANG_UPDATE 0x8000 // language needs to be updated
|
|
|
|
#define HOTKEY_SWITCH_LANG 0x0000 // id to switch between locales
|
|
|
|
#define MAX(i, j) (((i) > (j)) ? (i) : (j))
|
|
|
|
#define LANG_OAC (LANG_ORIGACTIVE | LANG_ACTIVE | LANG_CHANGED)
|
|
|
|
//
|
|
// Bits for g_dwChanges.
|
|
//
|
|
#define CHANGE_SWITCH 0x0001
|
|
#define CHANGE_DEFAULT 0x0002
|
|
#define CHANGE_CAPSLOCK 0x0004
|
|
#define CHANGE_NEWKBDLAYOUT 0x0008
|
|
#define CHANGE_TIPCHANGE 0x0010
|
|
#define CHANGE_LANGSWITCH 0x0020
|
|
#define CHANGE_DIRECTSWITCH 0x0040
|
|
|
|
|
|
//
|
|
// For the indicator on the tray.
|
|
//
|
|
#define IDM_NEWSHELL 249
|
|
#define IDM_EXIT 259
|
|
|
|
|
|
#define MOD_VIRTKEY 0x0080
|
|
|
|
//
|
|
// These are according to the US English kbd layout
|
|
//
|
|
#define VK_OEM_SEMICLN 0xba // ; :
|
|
#define VK_OEM_EQUAL 0xbb // = +
|
|
#define VK_OEM_SLASH 0xbf // / ?
|
|
#define VK_OEM_LBRACKET 0xdb // [ {
|
|
#define VK_OEM_BSLASH 0xdc // \ |
|
|
#define VK_OEM_RBRACKET 0xdd // ] }
|
|
#define VK_OEM_QUOTE 0xde // ' "
|
|
|
|
|
|
//
|
|
// For the hot key switching.
|
|
//
|
|
#define DIALOG_SWITCH_INPUT_LOCALES 0
|
|
#define DIALOG_SWITCH_KEYBOARD_LAYOUT 1
|
|
#define DIALOG_SWITCH_IME 2
|
|
|
|
//
|
|
// Show Language bar
|
|
//
|
|
#define REG_LANGBAR_SHOWNORMAL (DWORD)0
|
|
#define REG_LANGBAR_DOCK (DWORD)1
|
|
#define REG_LANGBAR_MINIMIZED (DWORD)2
|
|
#define REG_LANGBAR_HIDDEN (DWORD)3
|
|
#define REG_LANGBAR_DESKBAND (DWORD)4
|
|
|
|
|
|
//
|
|
// Typedef Declarations.
|
|
//
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwLangID; // language id
|
|
BOOL bDefLang; // default language
|
|
BOOL bNoAddCat; // don't add category
|
|
UINT uInputType; // default input type
|
|
LPARAM lParam; // item data
|
|
int iIdxTips; // index of Tips
|
|
CLSID clsid; // tip clsid
|
|
GUID guidProfile; // tip profile guid
|
|
HKL hklSub; // tip substitute hkl
|
|
ATOM atmDefTipName; // default input name
|
|
ATOM atmTVItemName; // tree view item name
|
|
} TVITEMNODE, *LPTVITEMNODE;
|
|
|
|
|
|
typedef struct langnode_s
|
|
{
|
|
WORD wStatus; // status flags
|
|
UINT iLayout; // offset into layout array
|
|
HKL hkl; // hkl
|
|
HKL hklUnload; // hkl of currently loaded layout
|
|
UINT iLang; // offset into lang array
|
|
HANDLE hLangNode; // handle to free for this structure
|
|
int nIconIME; // IME icon
|
|
struct langnode_s *pNext; // ptr to next langnode
|
|
UINT uModifiers; // hide Hotkey stuff here
|
|
UINT uVKey; // so we can rebuild the hotkey record
|
|
} LANGNODE, *LPLANGNODE;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwID; // language id
|
|
ATOM atmLanguageName; // language name - localized
|
|
TCHAR szSymbol[3]; // 2 letter indicator symbol (+ null)
|
|
UINT iUseCount; // usage count for this language
|
|
UINT iNumCount; // number of links attached
|
|
DWORD dwDefaultLayout; // default layout id
|
|
LPLANGNODE pNext; // ptr to lang node structure
|
|
} INPUTLANG, *LPINPUTLANG;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwID; // numeric id
|
|
BOOL bInstalled; // if layout is installed
|
|
UINT iSpecialID; // special id (0xf001 for dvorak etc)
|
|
ATOM atmLayoutFile; // layout file name
|
|
ATOM atmLayoutText; // layout text name
|
|
ATOM atmIMEFile; // IME file name
|
|
} LAYOUT, *LPLAYOUT;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwLangID; // language id
|
|
BOOL bEnabled; // enable status
|
|
BOOL bDefault; // default profile
|
|
BOOL fEngineAvailable; // engine status
|
|
BOOL bNoAddCat; // don't add category
|
|
UINT uInputType; // input type
|
|
CLSID clsid; // tip clsid
|
|
GUID guidProfile; // tip profile guid
|
|
HKL hklSub; // tip substitute hkl
|
|
UINT iLayout; // offset into keyboard layout array
|
|
ATOM atmTipText; // layout text name
|
|
} TIPS, *LPTIPS;
|
|
|
|
typedef struct
|
|
{
|
|
DWORD dwHotKeyID;
|
|
UINT idHotKeyName;
|
|
DWORD fdwEnable;
|
|
UINT uModifiers;
|
|
UINT uVKey;
|
|
HKL hkl;
|
|
ATOM atmHotKeyName;
|
|
UINT idxLayout;
|
|
UINT uLayoutHotKey;
|
|
} HOTKEYINFO, *LPHOTKEYINFO;
|
|
|
|
typedef struct
|
|
{
|
|
HWND hwndMain;
|
|
LPLANGNODE pLangNode;
|
|
LPHOTKEYINFO pHotKeyNode;
|
|
} INITINFO, *LPINITINFO;
|
|
|
|
typedef struct
|
|
{
|
|
UINT uVirtKeyValue;
|
|
UINT idVirtKeyName;
|
|
ATOM atVirtKeyName;
|
|
} VIRTKEYDESC;
|
|
|
|
|
|
|
|
//
|
|
// Global Variables.
|
|
//
|
|
|
|
static VIRTKEYDESC g_aVirtKeyDesc[] =
|
|
{
|
|
{0, IDS_VK_NONE, 0},
|
|
{VK_SPACE, IDS_VK_SPACE, 0},
|
|
{VK_PRIOR, IDS_VK_PRIOR, 0},
|
|
{VK_NEXT, IDS_VK_NEXT, 0},
|
|
{VK_END, IDS_VK_END, 0},
|
|
{VK_HOME, IDS_VK_HOME, 0},
|
|
{VK_F1, IDS_VK_F1, 0},
|
|
{VK_F2, IDS_VK_F2, 0},
|
|
{VK_F3, IDS_VK_F3, 0},
|
|
{VK_F4, IDS_VK_F4, 0},
|
|
{VK_F5, IDS_VK_F5, 0},
|
|
{VK_F6, IDS_VK_F6, 0},
|
|
{VK_F7, IDS_VK_F7, 0},
|
|
{VK_F8, IDS_VK_F8, 0},
|
|
{VK_F9, IDS_VK_F9, 0},
|
|
{VK_F10, IDS_VK_F10, 0},
|
|
{VK_F11, IDS_VK_F11, 0},
|
|
{VK_F12, IDS_VK_F12, 0},
|
|
{VK_OEM_SEMICLN, IDS_VK_OEM_SEMICLN, 0},
|
|
{VK_OEM_EQUAL, IDS_VK_OEM_EQUAL, 0},
|
|
{VK_OEM_COMMA, IDS_VK_OEM_COMMA, 0},
|
|
{VK_OEM_MINUS, IDS_VK_OEM_MINUS, 0},
|
|
{VK_OEM_PERIOD, IDS_VK_OEM_PERIOD, 0},
|
|
{VK_OEM_SLASH, IDS_VK_OEM_SLASH, 0},
|
|
{VK_OEM_3, IDS_VK_OEM_3, 0},
|
|
{VK_OEM_LBRACKET, IDS_VK_OEM_LBRACKET, 0},
|
|
{VK_OEM_BSLASH, IDS_VK_OEM_BSLASH, 0},
|
|
{VK_OEM_RBRACKET, IDS_VK_OEM_RBRACKET, 0},
|
|
{VK_OEM_QUOTE, IDS_VK_OEM_QUOTE, 0},
|
|
{'A', IDS_VK_A + 0, 0},
|
|
{'B', IDS_VK_A + 1, 0},
|
|
{'C', IDS_VK_A + 2, 0},
|
|
{'D', IDS_VK_A + 3, 0},
|
|
{'E', IDS_VK_A + 4, 0},
|
|
{'F', IDS_VK_A + 5, 0},
|
|
{'G', IDS_VK_A + 6, 0},
|
|
{'H', IDS_VK_A + 7, 0},
|
|
{'I', IDS_VK_A + 8, 0},
|
|
{'J', IDS_VK_A + 9, 0},
|
|
{'K', IDS_VK_A + 10, 0},
|
|
{'L', IDS_VK_A + 11, 0},
|
|
{'M', IDS_VK_A + 12, 0},
|
|
{'N', IDS_VK_A + 13, 0},
|
|
{'O', IDS_VK_A + 14, 0},
|
|
{'P', IDS_VK_A + 15, 0},
|
|
{'Q', IDS_VK_A + 16, 0},
|
|
{'R', IDS_VK_A + 17, 0},
|
|
{'S', IDS_VK_A + 18, 0},
|
|
{'T', IDS_VK_A + 19, 0},
|
|
{'U', IDS_VK_A + 20, 0},
|
|
{'V', IDS_VK_A + 21, 0},
|
|
{'W', IDS_VK_A + 22, 0},
|
|
{'X', IDS_VK_A + 23, 0},
|
|
{'Y', IDS_VK_A + 24, 0},
|
|
{'Z', IDS_VK_A + 25, 0},
|
|
{0, IDS_VK_NONE1, 0},
|
|
{'0', IDS_VK_0 + 0, 0},
|
|
{'1', IDS_VK_0 + 1, 0},
|
|
{'2', IDS_VK_0 + 2, 0},
|
|
{'3', IDS_VK_0 + 3, 0},
|
|
{'4', IDS_VK_0 + 4, 0},
|
|
{'5', IDS_VK_0 + 5, 0},
|
|
{'6', IDS_VK_0 + 6, 0},
|
|
{'7', IDS_VK_0 + 7, 0},
|
|
{'8', IDS_VK_0 + 8, 0},
|
|
{'9', IDS_VK_0 + 9, 0},
|
|
{'~', IDS_VK_0 + 10, 0},
|
|
{'`', IDS_VK_0 + 11, 0},
|
|
};
|
|
|
|
|
|
|
|
static BOOL g_bAdmin_Privileges = FALSE;
|
|
static BOOL g_bSetupCase = FALSE;
|
|
|
|
static BOOL g_bCHSystem = FALSE;
|
|
static BOOL g_bMESystem = FALSE;
|
|
static BOOL g_bShowRtL = FALSE;
|
|
|
|
static UINT g_iEnabledTips = 0;
|
|
static UINT g_iEnabledKbdTips = 0;
|
|
static DWORD g_dwToolBar = 0;
|
|
static DWORD g_dwChanges = 0;
|
|
|
|
static LPINPUTLANG g_lpLang = NULL;
|
|
static UINT g_iLangBuff;
|
|
static HANDLE g_hLang;
|
|
static UINT g_nLangBuffSize;
|
|
|
|
static LPLAYOUT g_lpLayout = NULL;
|
|
static UINT g_iLayoutBuff;
|
|
static HANDLE g_hLayout;
|
|
static UINT g_nLayoutBuffSize;
|
|
static UINT g_iLayoutIME; // Number of IME keyboard layouts.
|
|
static int g_iUsLayout;
|
|
static DWORD g_dwAttributes;
|
|
|
|
static int g_cyText;
|
|
static int g_cyListItem;
|
|
|
|
static LPTIPS g_lpTips = NULL;
|
|
static UINT g_iTipsBuff;
|
|
static UINT g_nTipsBuffSize;
|
|
static HANDLE g_hTips;
|
|
|
|
static TCHAR c_szLocaleInfo[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Locale");
|
|
static TCHAR c_szLocaleInfoNT4[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Nls\\Language");
|
|
static TCHAR c_szLayoutPath[] = TEXT("SYSTEM\\CurrentControlSet\\Control\\Keyboard Layouts");
|
|
static TCHAR c_szLayoutFile[] = TEXT("layout file");
|
|
static TCHAR c_szLayoutText[] = TEXT("layout text");
|
|
static TCHAR c_szLayoutID[] = TEXT("layout id");
|
|
static TCHAR c_szInstalled[] = TEXT("installed");
|
|
static TCHAR c_szIMEFile[] = TEXT("IME File");
|
|
static TCHAR c_szDisplayLayoutText[] = TEXT("Layout Display Name");
|
|
|
|
static TCHAR c_szKbdLayouts[] = TEXT("Keyboard Layout");
|
|
static TCHAR c_szPreloadKey[] = TEXT("Preload");
|
|
static TCHAR c_szSubstKey[] = TEXT("Substitutes");
|
|
static TCHAR c_szToggleKey[] = TEXT("Toggle");
|
|
static TCHAR c_szToggleHotKey[] = TEXT("Hotkey");
|
|
static TCHAR c_szToggleLang[] = TEXT("Language Hotkey");
|
|
static TCHAR c_szToggleLayout[] = TEXT("Layout Hotkey");
|
|
static TCHAR c_szAttributes[] = TEXT("Attributes");
|
|
static TCHAR c_szKbdPreloadKey[] = TEXT("Keyboard Layout\\Preload");
|
|
static TCHAR c_szKbdSubstKey[] = TEXT("Keyboard Layout\\Substitutes");
|
|
static TCHAR c_szKbdToggleKey[] = TEXT("Keyboard Layout\\Toggle");
|
|
static TCHAR c_szInternat[] = TEXT("internat.exe");
|
|
static char c_szInternatA[] = "internat.exe";
|
|
|
|
static TCHAR c_szTipInfo[] = TEXT("SOFTWARE\\Microsoft\\CTF");
|
|
static TCHAR c_szCTFMon[] = TEXT("CTFMON.EXE");
|
|
static char c_szCTFMonA[] = "ctfmon.exe";
|
|
|
|
static TCHAR c_szScanCodeKey[] = TEXT("Keyboard Layout\\IMEtoggle\\scancode");
|
|
static TCHAR c_szValueShiftLeft[] = TEXT("Shift Left");
|
|
static TCHAR c_szValueShiftRight[] = TEXT("Shift Right");
|
|
|
|
static TCHAR c_szIndicator[] = TEXT("Indicator");
|
|
static TCHAR c_szCTFMonClass[] = TEXT("CicLoaderWndClass");
|
|
|
|
static TCHAR c_szLoadImmPath[] = TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\IMM");
|
|
|
|
static TCHAR c_szPrefixCopy[] = TEXT("KEYBOARD_");
|
|
static TCHAR c_szKbdInf[] = TEXT("kbd.inf");
|
|
static TCHAR c_szKbdInf9x[] = TEXT("multilng.inf");
|
|
static TCHAR c_szKbdIMEInf9x[] = TEXT("ime.inf");
|
|
static TCHAR c_szIMECopy[] = TEXT("IME_");
|
|
|
|
static TCHAR c_szTipCategoryEnable[] = TEXT("Enable");
|
|
static TCHAR c_szCTFTipPath[] = TEXT("SOFTWARE\\Microsoft\\CTF\\TIP\\");
|
|
static TCHAR c_szLangProfileKey[] = TEXT("LanguageProfile");
|
|
static TCHAR c_szSubstituteLayout[] = TEXT("SubstituteLayout");
|
|
|
|
static TCHAR c_szKbdPreloadKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Preload");
|
|
static TCHAR c_szKbdSubstKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Substitutes");
|
|
static TCHAR c_szKbdToggleKey_DefUser[] = TEXT(".DEFAULT\\Keyboard Layout\\Toggle");
|
|
static TCHAR c_szRunPath_DefUser[] = TEXT(".DEFAULT\\Software\\Microsoft\\Windows\\CurrentVersion\\Run");
|
|
|
|
static TCHAR c_szHelpFile[] = TEXT("input.hlp");
|
|
|
|
|
|
static HOTKEYINFO g_aDirectSwitchHotKey[IME_HOTKEY_DSWITCH_LAST - IME_HOTKEY_DSWITCH_FIRST + 1];
|
|
#define DSWITCH_HOTKEY_SIZE sizeof(g_aDirectSwitchHotKey) / sizeof(HOTKEYINFO)
|
|
|
|
static HOTKEYINFO g_SwitchLangHotKey;
|
|
|
|
static HOTKEYINFO g_aImeHotKey0404[] =
|
|
{
|
|
{IME_ITHOTKEY_RESEND_RESULTSTR, IDS_RESEND_RESULTSTR_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_ITHOTKEY_PREVIOUS_COMPOSITION, IDS_PREVIOUS_COMPOS_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_ITHOTKEY_UISTYLE_TOGGLE, IDS_UISTYLE_TOGGLE_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_IME_NONIME_TOGGLE, IDS_IME_NONIME_TOGGLE_CHT,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_SHAPE_TOGGLE, IDS_SHAPE_TOGGLE_CHT,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_SYMBOL_TOGGLE, IDS_SYMBOL_TOGGLE_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
};
|
|
|
|
static HOTKEYINFO g_aImeHotKey0804[] =
|
|
{
|
|
|
|
{IME_CHOTKEY_IME_NONIME_TOGGLE, IDS_IME_NONIME_TOGGLE_CHS,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_CHOTKEY_SHAPE_TOGGLE, IDS_SHAPE_TOGGLE_CHS,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_CHOTKEY_SYMBOL_TOGGLE, IDS_SYMBOL_TOGGLE_CHS,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
|
|
};
|
|
|
|
|
|
static HOTKEYINFO g_aImeHotKeyCHxBoth[]=
|
|
{
|
|
|
|
// CHS HOTKEYs,
|
|
|
|
{IME_CHOTKEY_IME_NONIME_TOGGLE, IDS_IME_NONIME_TOGGLE_CHS,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_CHOTKEY_SHAPE_TOGGLE, IDS_SHAPE_TOGGLE_CHS,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_CHOTKEY_SYMBOL_TOGGLE, IDS_SYMBOL_TOGGLE_CHS,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
|
|
// CHT HOTKEYs,
|
|
|
|
{IME_ITHOTKEY_RESEND_RESULTSTR, IDS_RESEND_RESULTSTR_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_ITHOTKEY_PREVIOUS_COMPOSITION, IDS_PREVIOUS_COMPOS_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_ITHOTKEY_UISTYLE_TOGGLE, IDS_UISTYLE_TOGGLE_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_IME_NONIME_TOGGLE, IDS_IME_NONIME_TOGGLE_CHT,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_SHAPE_TOGGLE, IDS_SHAPE_TOGGLE_CHT,
|
|
MOD_LEFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
{IME_THOTKEY_SYMBOL_TOGGLE, IDS_SYMBOL_TOGGLE_CHT,
|
|
MOD_VIRTKEY|MOD_CONTROL|MOD_ALT|MOD_SHIFT,
|
|
0, 0, (HKL)NULL, 0, -1},
|
|
};
|
|
|
|
|
|
|
|
|
|
//
|
|
// Function Prototypes.
|
|
//
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleAddDlg(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleEditDlg(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleChangeInputLocaleHotkey(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleChangeThaiInputLocaleHotkey(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleChangeMEInputLocaleHotkey(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleChangeKeyboardLayoutHotkey(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleHotKeyDlg(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
KbdLocaleSimpleHotkey(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
INT_PTR CALLBACK
|
|
ToolBarSettingDlg(
|
|
HWND hwnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam);
|
|
|
|
|
|
|
|
BOOL Locale_LoadLocales(HWND hwnd);
|
|
|
|
BOOL IsEnabledTipOrMultiLayouts();
|
|
|
|
HKL GetSubstituteHKL(
|
|
REFCLSID rclsid,
|
|
LANGID langid,
|
|
REFGUID guidProfile);
|
|
|
|
#endif // INPUTDLG_H
|