OSDN Git Service

Make minor modifications in ipc.h and related files.
[xkeymacs/xkeymacs.git] / xkeymacsdll / xkeymacsdll.cpp
index f8e9979..006a49f 100644 (file)
@@ -1,11 +1,10 @@
 // xkeymacsdll.cpp : Defines the initialization routines for the DLL.\r
 //\r
 \r
-#include "stdafx.h"\r
-#include "resource.h"\r
+#include "xkeymacsdll.h"\r
 #include "Utils.h"\r
 #include "Commands.h"\r
-#include <afxdllx.h>\r
+#include "../xkeymacs/resource.h"\r
 #include <math.h>\r
 #include <Imm.h>\r
 #include <vector>\r
@@ -203,10 +202,8 @@ DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
 // CXkeymacsDll Class\r
 //////////////////////////////////////////////////////////////////////\r
 \r
-#include "xkeymacsdll.h"\r
-\r
 #pragma data_seg(".xkmcs")\r
-CONFIG CXkeymacsDll::m_Config = {0};\r
+Config CXkeymacsDll::m_Config = {0};\r
 bool CXkeymacsDll::m_bEnableKeyboardHook = false;\r
 BOOL CXkeymacsDll::m_bHook = TRUE;\r
 DWORD CXkeymacsDll::m_nHookAltRelease = 0;\r
@@ -229,9 +226,7 @@ HHOOK CXkeymacsDll::m_hHookShell = NULL;
 int CXkeymacsDll::m_nAppID = 0;\r
 CList<CClipboardSnap *, CClipboardSnap *> CXkeymacsDll::m_oKillRing;\r
 int CXkeymacsDll::m_nKillRing = 0;\r
-BOOL CXkeymacsDll::m_bRecordingMacro = FALSE;\r
-BOOL CXkeymacsDll::m_bDown[MAX_KEY] = {0};\r
-std::list<KbdMacro> CXkeymacsDll::m_Macro;\r
+KbdMacro* CXkeymacsDll::m_kbdMacro = NULL;\r
 \r
 BOOL CXkeymacsDll::SaveConfig()\r
 {\r
@@ -265,7 +260,7 @@ BOOL CXkeymacsDll::LoadConfig()
        return res;\r
 }\r
 \r
-void CXkeymacsDll::SetConfig(const CONFIG& config)\r
+void CXkeymacsDll::SetConfig(const Config& config)\r
 {\r
        m_Config = config;\r
 }\r
@@ -336,7 +331,7 @@ BOOL CXkeymacsDll::IsKeyboardHook()
 \r
 void CXkeymacsDll::ShowKeyboardHookState()\r
 {\r
-       ICONMSG msg = {MAIN_ICON,};\r
+       IconMsg msg = {MAIN_ICON,};\r
        if (m_bHook) {\r
                if (CCommands::IsTemporarilyDisableXKeymacs()) {\r
                        msg.nState = STATUS_DISABLE_TMP;\r
@@ -463,7 +458,7 @@ void CXkeymacsDll::InitKeyboardProc(BOOL bImeComposition)
                // Use Dialog Setting\r
                m_nAppID = GetAppID(_T("Dialog"), m_nAppID);\r
 \r
-       ICONMSG msg[3] = {\r
+       IconMsg msg[3] = {\r
                {CX_ICON, OFF_ICON, ""},\r
                {MX_ICON, OFF_ICON, ""},\r
                {META_ICON, OFF_ICON, ""}\r
@@ -779,11 +774,8 @@ RECURSIVE_COMMAND:
 \r
 DO_NOTHING:\r
        SetModifierIcons();\r
-       if (m_bRecordingMacro && (!bRelease || m_bDown[wParam])) {\r
-               KbdMacro m = { nCode, wParam, lParam, TRUE };\r
-               m_Macro.push_back(m);\r
-               m_bDown[wParam] |= !bRelease;\r
-       }\r
+       if (m_kbdMacro)\r
+               m_kbdMacro->Record(nKey, bRelease);\r
        return CallNextHookEx(NULL, nCode, wParam, lParam);\r
 \r
 RECURSIVE:\r
@@ -855,7 +847,7 @@ void CXkeymacsDll::InvokeM_x(LPCTSTR szPath)
 \r
 void CXkeymacsDll::SetModifierIcons()\r
 {\r
-       ICONMSG msg[6] = {\r
+       IconMsg msg[6] = {\r
                {MX_ICON, CCommands::bM_x(), ""},\r
                {CX_ICON, CCommands::bC_x(), ""},\r
                {META_ICON, CCommands::bM_(), ""},\r
@@ -874,10 +866,10 @@ void CXkeymacsDll::SetM_xTip(LPCTSTR szPath)
                _stprintf_s(m_M_xTip, "M-x %s", szPath);\r
 }\r
 \r
-BOOL CXkeymacsDll::SendIconMessage(ICONMSG *pMsg, DWORD num)\r
+BOOL CXkeymacsDll::SendIconMessage(IconMsg *pMsg, DWORD num)\r
 {\r
        DWORD ack, read;\r
-       return CallNamedPipe(ICON_PIPE, pMsg, sizeof(ICONMSG) * num, &ack, sizeof(DWORD), &read, NMPWAIT_NOWAIT) && read == sizeof(DWORD);\r
+       return CallNamedPipe(ICON_PIPE, pMsg, sizeof(IconMsg) * num, &ack, sizeof(DWORD), &read, NMPWAIT_NOWAIT) && read == sizeof(DWORD);\r
 }\r
 \r
 void CXkeymacsDll::Kdu(BYTE bVk, DWORD n, BOOL bOriginal)\r
@@ -1140,38 +1132,9 @@ BOOL CXkeymacsDll::Is106Keyboard()
        return m_Config.b106Keyboard;\r
 }\r
 \r
-void CXkeymacsDll::StartRecordMacro()\r
-{\r
-       if (CCommands::bC_u())\r
-               CallMacro();\r
-       m_bRecordingMacro = TRUE;\r
-       m_Macro.erase(m_Macro.begin(), m_Macro.end());\r
-       ZeroMemory(m_bDown, MAX_KEY);\r
-}\r
-\r
-void CXkeymacsDll::EndRecordMacro()\r
+void CXkeymacsDll::SetKbMacro(KbdMacro* kbdMacro)\r
 {\r
-       m_bRecordingMacro = FALSE;\r
-       while (!m_Macro.empty()) { // remove not released push\r
-               const KbdMacro& m = m_Macro.back();\r
-               if (HIWORD(m.lParam) & KF_UP)\r
-                       break;\r
-               m_Macro.pop_back();\r
-       }\r
-}\r
-\r
-void CXkeymacsDll::CallMacro()\r
-{\r
-       if (m_bRecordingMacro)\r
-               m_bRecordingMacro = FALSE;\r
-       UINT before = GetModifierState(FALSE);\r
-       SetModifierState(0, before);\r
-       for (std::list<KbdMacro>::const_iterator m = m_Macro.begin(); m != m_Macro.end(); ++m)\r
-               if (HIWORD(m->lParam) & KF_UP)\r
-                       ReleaseKey(static_cast<BYTE>(m->wParam));\r
-               else\r
-                       DepressKey(static_cast<BYTE>(m->wParam), m->bOriginal);\r
-       SetModifierState(before, 0);\r
+       m_kbdMacro = kbdMacro;\r
 }\r
 \r
 // call an original command which is defined in dot.xkeymacs\r