1 #pragma once 2 3 #include "input.h" 4 #include "locale_list.h" 5 #include "layout_list.h" 6 7 /* 8 * INPUT_LIST_NODE_FLAG_EDITED 9 * --- The modification flag. Since previous time, this entry is modified. 10 */ 11 #define INPUT_LIST_NODE_FLAG_EDITED 0x0001 12 13 /* 14 * INPUT_LIST_NODE_FLAG_ADDED 15 * --- The addition flag. Since previous time, this entry is newly added. 16 */ 17 #define INPUT_LIST_NODE_FLAG_ADDED 0x0002 18 19 /* 20 * INPUT_LIST_NODE_FLAG_DELETED 21 * --- The deletion flag. 22 * The application should ignore the entry with this flag if necessary. 23 */ 24 #define INPUT_LIST_NODE_FLAG_DELETED 0x0004 25 26 /* 27 * INPUT_LIST_NODE_FLAG_DEFAULT 28 * --- The default flag. The entry with this flag should be single in the list. 29 */ 30 #define INPUT_LIST_NODE_FLAG_DEFAULT 0x0008 31 32 typedef struct _INPUT_LIST_NODE 33 { 34 WORD wFlags; 35 36 LOCALE_LIST_NODE *pLocale; 37 LAYOUT_LIST_NODE *pLayout; 38 39 HKL hkl; /* Only for loaded input methods */ 40 41 LPWSTR pszIndicator; 42 43 struct _INPUT_LIST_NODE *pPrev; 44 struct _INPUT_LIST_NODE *pNext; 45 } INPUT_LIST_NODE; 46 47 48 VOID 49 InputList_Create(VOID); 50 51 BOOL 52 InputList_Process(VOID); 53 54 BOOL 55 InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout); 56 57 VOID 58 InputList_SetDefault(INPUT_LIST_NODE *pNode); 59 60 VOID 61 InputList_Remove(INPUT_LIST_NODE *pNode); 62 63 VOID 64 InputList_Destroy(VOID); 65 66 INPUT_LIST_NODE* 67 InputList_GetFirst(VOID); 68