Jump to content

Recommended Posts

Posted

Hi guys,

I would like to replace totally the 2 mouse buttons with 2 arbitrary keys on keyboard. By "totally" I mean not just replace "mouse click" but also replace "mouse down" as well.

So far I succeeded in replacing "mouse click" like this:

HotKeySet("`", "_left_mouse_click")

Func _left_mouse_click()

    ; Unset the HotKey
    HotKeySet("`") ; prevent hotkey recursion
    
    MouseClick($MOUSE_CLICK_LEFT)

    ; And now reset the HotKey
    HotKeySet("`", "_left_mouse_click")
    
EndFunc

However I couldn't do the same with "mouse down", I tried the following but it didn't work:

HotKeySet("{` down}", "_left_mouse_down")

Func _left_mouse_down()

    ; Unset the HotKey
    HotKeySet("{` down}") ; prevent hotkey recursion
    
    MouseDown($MOUSE_CLICK_LEFT) 

    ; And now reset the HotKey
    HotKeySet("{` down}", "_left_mouse_down")
    
EndFunc

In the function _left_mouse_down() above, I also tried removing the unset / reset statements, but it didn't work neither.

Is it even possible to replace "mouse down" with an arbitrary "key down" using AutoIt?

Thank you.

Posted (edited)

Once you press ` key, it sends MouseDown event.

Until you release the mouse button (MouseUp) it will be held down, so there is no point of press it down all the time, you do it only once.

 

Why you need to keep pressing the MouseDown button? It's either down or clicked.

Edited by MrCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted (edited)

Maybe something lkie this:

#include <Misc.au3>

Global $hUser32 = DllOpen('user32.dll')

HotKeySet('{ESC}', _KeyPressedDummy)
HotKeySet('`', _KeyPressedDummy)

While 1
    Sleep(10)
    
    If _IsPressed('C0', $hUser32) Then ;` key
        MouseDown('Main')
        
        While _IsPressed('C0', $hUser32)
            Sleep(10)
        WEnd
        
        MouseUp('Main')
    EndIf
WEnd

Func _KeyPressedDummy()
    If @HotKeyPressed = '{ESC}' Then
        Exit
    EndIf
EndFunc

 

Edited by MrCreatoR

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Posted

Or this similar approach :

#include <Constants.au3>
#include <Misc.au3>

Global $bDown = False

HotKeySet ("{ESC}", _Exit)
HotKeySet("{« down}", "_left_mouse_down")

WinActivate ("Some Window")

While True
  Sleep (100)
WEnd

Func _left_mouse_down()
  ConsoleWrite ("test" & @CRLF)
  If $bDown Then Return
  $bDown = True
  MouseDown($MOUSE_CLICK_LEFT)
  While _IsPressed ("E2")
    Sleep (10)
  WEnd
  MouseUp($MOUSE_CLICK_LEFT)
  $bDown = False
EndFunc

Func _Exit ()
  Exit
EndFunc

Note : changed the hot key

Posted

@Nine: Thank you very much, I am testing your solution, it's working great! It can perform both clicking and dragging flawlessly in various applications.

@MrCreatoR: Thank you for your solution. I will try yours if Nine's solution fails (it is working great but in some edge cases something might be broken I don't know...). As for your question, well, my ultimate goal is to replace the 2 mouse buttons totally, and hence the solution must be able to replace not only mouse clicking but also mouse dragging.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...