summaryrefslogtreecommitdiff
path: root/windows/keybuddy2/src/hookfuncs.cpp
diff options
context:
space:
mode:
authorqwertfisch <qwertfisch@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2012-11-19 21:25:24 +0000
committerqwertfisch <qwertfisch@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2012-11-19 21:25:24 +0000
commit4cf9a3b8fe91cc0b43d0cbab51cf02c7b1f8d60d (patch)
tree6f6ea79393d093d6fb1627bc6279f2dfae20b155 /windows/keybuddy2/src/hookfuncs.cpp
parent2d7fc76824f63c6e72193e0a4c48ce55cbb53aee (diff)
downloadneo-layout-4cf9a3b8fe91cc0b43d0cbab51cf02c7b1f8d60d.tar.gz
neo-layout-4cf9a3b8fe91cc0b43d0cbab51cf02c7b1f8d60d.tar.bz2
neo-layout-4cf9a3b8fe91cc0b43d0cbab51cf02c7b1f8d60d.zip
KeyBuddy2: ein neuer Ansatz eines Layouttools, ähnlich zu NeoVars, aber in C++ geschrieben
git-svn-id: https://svn.neo-layout.org@2431 b9310e46-f624-0410-8ea1-cfbb3a30dc96
Diffstat (limited to 'windows/keybuddy2/src/hookfuncs.cpp')
-rw-r--r--windows/keybuddy2/src/hookfuncs.cpp60
1 files changed, 60 insertions, 0 deletions
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;
+ }
+}