OSDN Git Service

Use the reg command to import/export properties
[xkeymacs/xkeymacs.git] / xkeymacs / keyboardlayout.h
1 #ifndef KEYBOARDLAYOUT_H_INCLUDED\r
2 #define KEYBOARDLAYOUT_H_INCLUDED\r
3 \r
4 #if _MSC_VER > 1000\r
5 #pragma once\r
6 #endif // _MSC_VER > 1000\r
7 \r
8 #include "profile.h"\r
9 #include "key.h"\r
10 \r
11 struct ScanCode\r
12 {\r
13         BYTE nScanCode;\r
14         BYTE nPrefix;   // 0x00, 0xE0 or 0xE1   cf. Keyboard Scan Code Specification -- 16\r
15 };\r
16 \r
17 struct ScanCodeMapping\r
18 {\r
19         ScanCode current;\r
20         ScanCode original;\r
21 };\r
22 \r
23 struct KeyboardLayout\r
24 {\r
25         ScanCode scancode;\r
26         int nBaseControlID;\r
27         int nCurrentControlID;\r
28         int nToolTipID;\r
29         CKey *pBaseKey;\r
30         CKey *pCurrentKey;\r
31 };\r
32 \r
33 class CKeyboardLayout: public CDialog\r
34 {\r
35 private:\r
36         static KeyboardLayout m_KeyboardLayouts[112];\r
37         static ScanCode m_CurrentScanCodeMap[MAX_HKEY_TYPE][4][256];\r
38         static ScanCode m_ScanCodeMap[MAX_HKEY_TYPE][4][256];\r
39         CToolTipCtrl m_ToolTip;\r
40         int GetControlID(const ScanCode scancode, const BOOL bBase);\r
41         BYTE PrefixID2Code(int nPrefixID);\r
42         int Prefix2ID(BYTE nPrefix);\r
43         DWORD GetScanCodeLength(HKEY_TYPE hkeyType);\r
44         BOOL ChangedKeyboardLayout(HKEY_TYPE hkeyType);\r
45         virtual BOOL PreTranslateMessage(MSG *pMsg);\r
46 protected:\r
47         HKEY_TYPE m_HkeyType;\r
48         virtual BOOL OnInitDialog();\r
49         virtual void OnOK();\r
50         afx_msg void OnDestroy();\r
51         void InitKeyboardLayout();\r
52         void CKeyboardLayout::DestroyKeyboardLayout();\r
53         BOOL GetScanCodeMap(HKEY_TYPE hkeyType, ScanCode original, ScanCode *current);\r
54         int GetBaseControlID(const ScanCode scancode);\r
55         int GetCurrentControlID(const ScanCode scancode);\r
56         int LostKeyWarning(HKEY_TYPE hkeyType);\r
57         void SaveScanCodeMap(HKEY_TYPE hkeyType);\r
58         void LoadScanCodeMap(HKEY_TYPE hkeyType);\r
59         DECLARE_MESSAGE_MAP()\r
60 public:\r
61         CToolTipCtrl *ToolTip();\r
62         KeyboardLayout *GetKeyboardLayout(int nKey, BOOL bBase = FALSE);\r
63         void SetScanCodeMap(HKEY_TYPE hkeyType, ScanCodeMapping mapping);\r
64         int GetPointedKey(const CPoint point);\r
65         virtual int GetToolTipID(int nToolTipID);\r
66         CKeyboardLayout(const HKEY_TYPE hkey_type, UINT nIDTemplate, CWnd* pParentWnd = NULL);\r
67         virtual ~CKeyboardLayout();\r
68 };\r
69 \r
70 #endif // KEYBOARDLAYOUT_H_INCLUDED\r