This is probably a quick thing to do in AHK, but I have not yet learned all the necessary commands so I'd really enjoy some help. On to the task!
I own a MS Natural Ergonomic 4000 keyboard (stolen picture, click to zoom):
(http://www.virtual-hideout.net/reviews/microsoft_4000_kb/main1.jpg) (http://www.virtual-hideout.net/reviews/microsoft_4000_kb/image26.jpg)
The bundled software does not allow many changes, so I was thinking that I could use AHK to alter the functionality of a few things. In particular, the zoom slider (in the middle) and the back/forward keys (at the bottom).
Firstly, the slider. From AHK's Key History view (which is only showing the key strokes), I believe it works by sending Ctrl+Scroll wheel up/down every ~.1s or so. Since zoom is not very useful to me, I'd prefer this combination be mapped to just the scroll wheel up/down. Is this doable?
Secondly, the back/fwd keys. My mouse is already equipped with such buttons so the keyboard is redundant. Instead, I'd like these keys to map to left/right mouse buttons (a throwback to my lappy). Again with AHK, I see these keys are mapped to Alt+Left/Right in the following way: Alt d, Left d, Left u, Alt u--but all sequenced without delay. The problem I'm running in to with coding is translating this to the analogous mousing. That is, I'd like to be able to hold down the back/fwd keys and drag files/folders. Is this doable?
(This is more useful than it sounds.)
I've found that the mouse can be moved around more freely when the fingers are loose, so using the alternate hand to control the buttons makes repetitive mousing a breeze. E.g. big file operations, simple Flash games, AutoCAD, etc.
I should also like to note that my mouse uses RightAlt+L/R, so there shouldn't be a conflict there if the script just recognizes LeftAlt.
Thanks for reading, any help you can provide would be most appreciated.
Cheers,
noth(a)nk.you
P.S. Thanks for tolerating my playing with the spoiler tag!
EhEh.. So much text for such a small solution!
^WheelDown::WheelDown
^WheelUp::WheelUp
<!Left::Lbutton
<!Right::RButton
Does that solve it? ;)
Thanks a lot for your help, jgpaiva--it's close.
The scrolling wasn't working. Ctrl was still down when AHK executed the Wheel commands, so (if anybody's interested) I changed it to
^WheelDown::Send {^Up}{WheelDown}
^WheelUp::Send {^Up}{WheelUp}
Now it works pretty well, reverting back to the default behavior only when trying to scroll past the limits of the page (perhaps some timing issue?)
On the L/Rbuttons, though, I'm running into more trouble.
When pressing those keys in programs without "Back" support (e.g. Notepad and AHK), AHK reports:
A4 038 d 1.30 Alt
25 14B h d 0.00 Left
01 000 i d 0.00 LButton
25 14B h u 0.00 Left
01 000 i u 0.00 LButton
A4 038 u 0.00 Alt
and it works beautifully.
But in those programs with back support (e.g. Firefox and Explorer), AHK reports:
01 000 d 4.68 LButton
01 000 u 0.10 LButton
and the programs respond as though they were given the Back or Forward commands.
I'm thinking that the Back/Fwd commands might have some deeper hook into the OS?
Any thoughts?
Thanks,
noth(a)nk.you
Hum.. Then. it's harder than i thought.
How about the following, to replace the back/forward?
Browser_Back::Lbutton
Browser_Forward::RButton
Just gave it another try.
Through MS's software, I mapped the keys to something I wouldn't use (Media Track Fwd/Back), then opened up AHK again. I found them coming through under SC169 and SC16A (fwd and back, respectively). Then the [simple!] .ahk script
SC16A::LButton
SC169::RButton
fixed it!
I think that the Back and Fwd commands were deep in the system, so AHK couldn't intercept them. Changing MS' software to execute a shallower command then allowed AHK to do its magic.
Incidently, from the AHK page (http://www.autohotkey.com/docs/KeyList.htm#SpecialKeys), it sounds like they would advocate completely uninstalling Microsoft's software and just using their's to execute all the required commands using these SC codes. Not a half-bad idea, actually. Maybe I'll do that some lazy morning.
Thanks for your assistance!
noth(a)nk.you