Remapping the Mousewheel to a keyboard key with autoit

Tag: key , autoit , remap Author: yy20092 Date: 2012-02-11

i want to remap the mouseup and mouse down to keys on my keyboard only while using a certain application. This is how far i got on my own:

_WinWaitActivate("League of Legends (TM) Client","")
HotKeySet("{K}", "WinTab")
ProcessWait("")

Func WinTab()
     Send("G")
EndFunc

#region --- Internal functions Au3Recorder Start ---
Func _WinWaitActivate($title,$text,$timeout=0)
    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)
EndFunc
#endregion --- Internal functions Au3Recorder End ---

This would remap the letter k to the letter g. It should be possible to remap the MouseWheel as well, but i could not find the approbriate keybinding. Another thing is, i want to pause the remapping if {Esc} is pressed or Alt-Tab or another letter is pressed.

cheers and thanks

Best Answer

    While True
   If IsPressed('21') Then 
         MouseWheel("up", 2)
      EndIf

   If IsPressed('22') Then 
         MouseWheel("down", 2)
   EndIf
   Sleep(100)
Wend

Exit
Func IsPressed($hexKey)   
   Local $aR, $bO
   $hexKey = '0x' & $hexKey
   $aR = DllCall("user32", "int", "GetAsyncKeyState", "int", $hexKey)
   If Not @error And BitAND($aR[0], 0x8000) = 0x8000 Then
      $bO = 1
   Else
      $bO = 0
   EndIf
   Return $bO
EndFunc  ;==>_IsPressed

#cs
   01 Left mouse button
   02 Right mouse button
   04 Middle mouse button (three-button mouse)
   05 Windows 2000/XP: X1 mouse button
   06 Windows 2000/XP: X2 mouse button
   08 BACKSPACE key
   09 TAB key
   0C CLEAR key
   0D ENTER key
   10 SHIFT key
   11 CTRL key
   12 ALT key
   13 PAUSE key
   14 CAPS LOCK key
   1B ESC key
   20 SPACEBAR
   21 PAGE UP key
   22 PAGE DOWN key
   23 END key
   24 HOME key
   25 LEFT ARROW key
   26 UP ARROW key
   27 RIGHT ARROW key
   28 DOWN ARROW key
   29 SELECT key
   2A PRINT key
   2B EXECUTE key
   2C PRINT SCREEN key
   2D INS key
   2E DEL key
   30 0 key
   31 1 key
   32 2 key
   33 3 key
   34 4 key
   35 5 key
   36 6 key
   37 7 key
   38 8 key
   39 9 key
   41 A key
   42 B key
   43 C key
   44 D key
   45 E key
   46 F key
   47 G key
   48 H key
   49 I key
   4A J key
   4B K key
   4C L key
   4D M key
   4E N key
   4F O key
   50 P key
   51 Q key
   52 R key
   53 S key
   54 T key
   55 U key
   56 V key
   57 W key
   58 X key
   59 Y key
   5A Z key
   5B Left Windows key
   5C Right Windows key
   60 Numeric keypad 0 key
   61 Numeric keypad 1 key
   62 Numeric keypad 2 key
   63 Numeric keypad 3 key
   64 Numeric keypad 4 key
   65 Numeric keypad 5 key
   66 Numeric keypad 6 key
   67 Numeric keypad 7 key
   68 Numeric keypad 8 key
   69 Numeric keypad 9 key
   6A Multiply key
   6B Add key
   6C Separator key
   6D Subtract key
   6E Decimal key
   6F Divide key
   70 F1 key
   71 F2 key
   72 F3 key
   73 F4 key
   74 F5 key
   75 F6 key
   76 F7 key
   77 F8 key
   78 F9 key
   79 F10 key
   7A F11 key
   7B F12 key
   7C-7F F13 key - F16 key
   80H-87H F17 key - F24 key
   90 NUM LOCK key
   91 SCROLL LOCK key
   A0 Left SHIFT key
   A1 Right SHIFT key
   A2 Left CONTROL key
   A3 Right CONTROL key
   A4 Left MENU key
   A5 Right MENU key
#ce

Other Answer1

You cannot bind mouse actions using HotKeySet, as that is only for keyboards.

Instead there are several options:

The second part has been done thousands of times... Search for it :)

comments:

Is the answer of @ADIN right? What is the role of the Func IsPressed($hexKey) on his answer?
@Servant, Yes, he is just using my first suggestion from this answer. He is also defining IsPressed himself rather than using the one included in the AutoIt Misc.au3 standard UDF.
But I think he did not disable the original functions of mouse scroll wheel.