bobbyab9987 Posted April 19, 2020 Posted April 19, 2020 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.
MrCreatoR Posted April 19, 2020 Posted April 19, 2020 (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 April 19, 2020 by MrCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: 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 ProgramUDFs: 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 Examples: 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 ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
MrCreatoR Posted April 19, 2020 Posted April 19, 2020 (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 April 19, 2020 by MrCreatoR Spoiler Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1 AutoIt Russian Community My Work... Spoiler Projects: 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 ProgramUDFs: 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 Examples: 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 ) * === My topics === * ================================================== ================================================== AutoIt is simple, subtle, elegant. © AutoIt Team
Nine Posted April 19, 2020 Posted April 19, 2020 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 “They did not know it was impossible, so they did it” ― Mark Twain Spoiler Block all input without UAC Save/Retrieve Images to/from Text Monitor Management (VCP commands) Tool to search in text (au3) files Date Range Picker Virtual Desktop Manager Sudoku Game 2020 Overlapped Named Pipe IPC HotString 2.0 - Hot keys with string x64 Bitwise Operations Multi-keyboards HotKeySet Recursive Array Display Fast and simple WCD IPC Multiple Folders Selector Printer Manager GIF Animation (cached) Debug Messages Monitor UDF Screen Scraping Round Corner GUI UDF Multi-Threading Made Easy Interface Object based on Tag
bobbyab9987 Posted April 19, 2020 Author Posted April 19, 2020 @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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now