Autohotkey - capture extra mouse buttons - autohotkey

Can autohotkey capture nonstandard mouse buttons? I use a five-button mouse (Microsoft Wireless Laser Mouse 6000).

XButton1 and XButton2 according to the documentation on autohotkey.com.

The following URLs show how to have autohotkey log all keyboard and mouse events, and how to look at the log autohotkey generates of those events.
http://www.autohotkey.com/docs/commands/_InstallMouseHook.htm
http://www.autohotkey.com/docs/KeyList.htm#SpecialKeys (special keys section)
Based on this, you can find out about all mouse and keyboard events by creating an autohotkey script as such:
#InstallKeybdHook
#InstallMouseHook
Once you run the script, you can double click on the tray icon for that script, then go to View > Key History and Script Info (Ctrl K)
Based on this information, I figured out that my mouse driver is already redefining the extra mouse buttons to other keys. However, I can re-map those keys by going to Control Panel > Mouse, selecting the desired button, and using the "Macro..." option in the mouse configuration (this is a special configuration only for the Microsoft Wireless Laser Mouse 6000 v2). In the macro dialog, I can define keystrokes for those mouse buttons to send (only one per mouse button). Next, I can use AutoHotkey to watch for whatever keystrokes I have defined, and perform specific actions based on those keystrokes.

You need to capture the scancode of the key and then use that. You can find a script in 5th post of this thread, written by Skan, which will allow you to do this. Just run that and click on the GUI with the mouse button you wish to determine the scancode. Then use the scancode in place of the normal key when you create the hotkey.
There is also a built in method of retrieving keys which is documented at the bottom of this page under the heading "Special Keys". Essentially, AHK logs your key presses and automatically records the scancodes for you.
To use the scancode as a hotkey, you just do the following:
SC###:: ;Your code here
Where ### is replaced with the code of your key (or mouse button).

Related

Autohotkey - Enable all mouse click functionality and also play a sound

I have this autohotkey script, I want to play a sound on mouse click. But this script doesn't let me drag windows or resize window or highlighting text using mouse left click.
Any idea how I can have all mouse left click functionality and also play the Error.wav sound on every click?
LButton::
MouseClick, Left
SoundPlay, C:\Windows\media\Error.wav
return
Your current script is not only listening for a mouse click, but also emulating a second click with MouseClick, Left. It seems that's not what you want. Also use ~ to ensure that
When the hotkey fires, its key's native function will not be blocked
(hidden from the system)
~LButton::SoundPlay, C:\Windows\media\Error.wav
See Hotkeys documentation.

Using the §-key instead of the TAB key in ALT+TAB with Autohotkey

I have a need to use something else than the TAB key to achieve ALT+TAB functionality in Windows 10. (long story short - I'm using Parallells and remote desktop on a Mac, and need to keep the Remote Desktop setting "Apply Windows Key Combinations" set to "On this computer", so I can't just forward everything to the remote computer).
Using Autohotkey on the remote computer, I thought I could simply do something like
§::Send {Tab}
to be able to press ALT+§ instead of ALT+TAB, and have Parallells ignore it and just forward it as any other key (for example SHIFT+A to type an "A"). But it doesn't seem to work that way, nothing happens when holding down ALT and pressing § except a "pling" sound. Just pressing § alone prints a TAB character if I'm in a text editor.
I tried
^!§::Send ^!{Tab}
as well, same result.
For now I settled on using the following script instead, which lets me press § to bring up the ALT+TAB window, where I can either use arrow keys or the § key to select an application, and then Enter to switch to it:
§::Send ^!{Tab}
This is not bad, but it's annoying to have to use the Enter key to activate the window. So, is there any way to simply replace ALT+TAB with ALT+§ and get the normal functionality of the ALT+TAB window-switcher?
Use the hotkey <!§::AltTab.
<! means left alt and you can read more about AltTab here.
Also, AltTabMenuDismiss might be worth looking into related to the problem you outlined in the comments.

Replace a key for an external mouse

I have an external mouse which also register a HID keyboard in Device Manager. One of its button shows start menu. I want to replace it with mouse click. Since I also have an inbuilt keyboard I don't want to replace its start button. I want to replace start button from the external mouse
Try using the #InstallKeybdHook and look in the KeyHistory when you have pressed the button!
This can atleast tell you if your mouse button has the same virtual key code or scan code as the built-in keyboards key
This is a step by step guide http://ahkscript.org/docs/KeyList.htm#SpecialKeys

Menu Item in AHK

I'm switching from keyboard maestro and mac, to AHK and Windows.
I'd like to choose a menu item in Thunderbird, say,
"Message>Move to>me#email.com>Archive".
Or I'd like to choose bookmark "2checkvist" in Chrome.
How do I create hotkeys to menu items? And how do I keep them to only that program, so that alt+t in chrome can do one thing, while alt+t in thunderbird does another thing?
As Jan Dvorak says, look at ifWinActive in the docs (I should get a point for posting the link to docs, you know).
Then you can use send with the alt key, something like this (you have to expiriment).
ifwinexist thunderbird
{
winactivate thunderbird
send !m ;message menu
send m ;move to (if you have more m-commands, then you have to send this more than once till you get to it)
send something ;here put keys until you get to your account
send a ;archive
}
Basically, you want ahk to use the alt menu keys. Everyone's interface differs a little depending on your addons and version. In your main interface, hold down the alt key and look at your menu bar. You will see that little underlines appear under certain letters. This is your "alt" key command. Now, figure out the sequence. You only need to push alt once to open the "alt thread" - now navigate manually through the menus using your keyboard. Now translate that sequence into autohotkey send commands.
You might also have to use activateWindow to assure your alt key will take correctly.

Sending keystrokes and mouse clicks using Scala

I've previously used AutoHotkey to send keystrokes and mouse clicks to automate interaction with GUIs and browsers. How do I send keystrokes and mouse clicks this time using Scala?
You can use java.awt.Robot.
val robot = new java.awt.Robot
robot.mouseMove(100,100) // Cursor will jump to the top left of your screen
Note that you have to enter text keycode by keycode (see java.awt.event.KeyEvent). This is pretty annoying, but you can write code to automate the pressing and releasing of keys. (You do need to release every key you press! It's emulating the keyboard....)
JNA + Windows API
I had to send input to a background window and it worked really well for me.