endlesslove_1998

Remap Keyboard

Mar 25th, 2015
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.56 KB | None | 0 0
  1. #RequireAdmin
  2. Global $hKeyProc = DllCallbackRegister("_Keyboard_Hook", "long", "int;wparam;lparam")
  3. Global $Hook = DllCall("user32.dll", "handle", "SetWindowsHookEx", "int", 13, "ptr", DllCallbackGetPtr($hKeyProc), "handle", DllCall("kernel32.dll", "handle", "GetModuleHandleW", "ptr", 0)[0], "dword", 0)[0] ;13:WM_KEYBOARD
  4.  
  5. Run("Notepad")
  6.  
  7. While 1
  8.     Sleep(50)
  9. WEnd
  10.  
  11. Func _Keyboard_Hook($nCode, $wParam, $lParam)
  12.     Local $KEYHOOK = DllStructCreate("dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
  13.     Local $vkCode = DllStructGetData($KEYHOOK, "vkCode")
  14.     If $nCode < 0 Then
  15.         Return DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $Hook, "int", $nCode, "wparam", $wParam, "lparam", $lParam)[0]
  16.     EndIf
  17.     Switch $wParam
  18.         Case 0x100 ;$WM_KEYDOWN, 0x104 = $WM_SYSKEYDOWN
  19.             Switch $vkCode
  20.                 Case 0x70 To 0x78
  21.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode - 0xF, 'int', 0, 'int', 0, 'ptr', 0)
  22.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode - 0xF, 'int', 0, 'int', 0x0002, 'ptr', 0) ; KEYEVENTF_KEYUP
  23.                     Return 1
  24.  
  25.                 Case 0x79
  26.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x60, 'int', 0, 'int', 0, 'ptr', 0)
  27.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x60, 'int', 0, 'int', 0x0002, 'ptr', 0) ; KEYEVENTF_KEYUP
  28.                     Return 1
  29.  
  30.                 Case 0x30 To 0x39
  31.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x10, 'int', 0, 'int', 0, 'ptr', 0) ; Shift down
  32.  
  33.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', 0, 'ptr', 0) ; $vkCode down
  34.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', $vkCode, 'int', 0, 'int', 0x0002, 'ptr', 0) ; $vkCode Up
  35.  
  36.                     DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x10, 'int', 0, 'int', 0x0002, 'ptr', 0) ; Shift up
  37.  
  38.                     Return 1 ; Kill
  39.  
  40.                 Case 0x1B ; VK_ESC
  41.                     Exit
  42.             EndSwitch
  43.             ;   Case Else
  44.             ;       Switch DllStructGetData($KEYHOOK, "flags")
  45.             ;           Case 0x20 ;$LLKHF_ALTDOWN
  46.             ;               ToolTip("ALT")
  47.             ;           Case 0x1 ;$LLKHF_EXTENDED
  48.             ;               ToolTip("EXTENDED")
  49.             ;           Case 0x10 ;$LLKHF_INJECTED
  50.             ;               ToolTip("INJECTED")
  51.             ;           Case 0x80 ;$LLKHF_UP
  52.             ;               ToolTip("scanCode: " & DllStructGetData($KEYHOOK, "scanCode") & @LF & "vkCode: " & $vkCode)
  53.             ;       EndSwitch
  54.     EndSwitch
  55.     Return DllCall("user32.dll", "lresult", "CallNextHookEx", "handle", $Hook, "int", $nCode, "wparam", $wParam, "lparam", $lParam)[0]
  56. EndFunc   ;==>_Keyboard_Hook
  57.  
  58. Func OnAutoItExit()
  59.     DllCall("user32.dll", "bool", "UnhookWindowsHookEx", "handle", $Hook)
  60.     DllCallbackFree($hKeyProc)
  61. EndFunc   ;==>OnAutoItExit
Advertisement
Add Comment
Please, Sign In to add comment