From 4cf9a3b8fe91cc0b43d0cbab51cf02c7b1f8d60d Mon Sep 17 00:00:00 2001 From: qwertfisch Date: Mon, 19 Nov 2012 21:25:24 +0000 Subject: KeyBuddy2: ein neuer Ansatz eines Layouttools, ähnlich zu NeoVars, aber in C++ geschrieben MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.neo-layout.org@2431 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/keybuddy2/src/hookfuncs.cpp | 60 +++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 windows/keybuddy2/src/hookfuncs.cpp (limited to 'windows/keybuddy2/src/hookfuncs.cpp') diff --git a/windows/keybuddy2/src/hookfuncs.cpp b/windows/keybuddy2/src/hookfuncs.cpp new file mode 100644 index 0000000..26686a4 --- /dev/null +++ b/windows/keybuddy2/src/hookfuncs.cpp @@ -0,0 +1,60 @@ + +#include "includes.h" + +HHOOK hHookKB2=NULL; + +// install low level keyboard hook +int SetHook() +{ + int err = 0; + hHookKB2 = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, GetModuleHandle( NULL ),0); + if(hHookKB2==NULL) + { + err = (int)GetLastError(); + return err; + } + return 0; +} + +// remove low level keyboard hook +int RemoveHook() +{ + BOOL Hbool = 0; + int err = 0; + Hbool = UnhookWindowsHookEx(hHookKB2); + if(Hbool == 0) + { + err = (int)GetLastError(); + return err; + } + return 0; +} + +// this function is called by windows if a key is pressed +LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) +{ + KBDLLHOOKSTRUCT *kbdl_struct; + + if(nCode != HC_ACTION){ + return ( CallNextHookEx(hHookKB2, nCode, wParam, lParam) ); + } + + kbdl_struct = (KBDLLHOOKSTRUCT*) lParam; + + if(KeyBuddy2::ProcessKbdEvent( + wParam, + kbdl_struct->vkCode, + kbdl_struct->scanCode, + (kbdl_struct->flags & LLKHF_EXTENDED) !=0, + (kbdl_struct->flags & LLKHF_INJECTED) !=0, + (kbdl_struct->flags & LLKHF_ALTDOWN) !=0, + (kbdl_struct->flags & LLKHF_UP) !=0, + kbdl_struct->dwExtraInfo)) + { + return ( CallNextHookEx(hHookKB2, nCode, wParam, lParam) ); + } + else + { + return 1; + } +} -- cgit v1.2.3