mirror of
https://github.com/bdnugget/AHK_X11.git
synced 2026-11-07 02:57:27 +00:00
165 lines
3.2 KiB
AutoHotkey
165 lines
3.2 KiB
AutoHotkey
; ToolTip Mouse Menu (requires XP/2k/NT) -- by Rajat
|
|
; http://www.autohotkey.com
|
|
; This script displays a popup menu in response to briefly holding down
|
|
; the middle mouse button. Select a menu item by left-clicking it.
|
|
; Cancel the menu by left-clicking outside of it. A recent improvement
|
|
; is that the contents of the menu can change depending on which type of
|
|
; window is active (Notepad and Word are used as examples here).
|
|
|
|
; You can set any title here for the menu:
|
|
MenuTitle = -=-=-=-=-=-=-=-
|
|
|
|
; This is how long the mouse button must be held to cause the menu to appear:
|
|
UMDelay = 20
|
|
|
|
SetFormat, float, 0.0
|
|
SetBatchLines, 10ms
|
|
SetTitleMatchMode, 2
|
|
#SingleInstance
|
|
|
|
|
|
;___________________________________________
|
|
;_____Menu Definitions______________________
|
|
|
|
; Create / Edit Menu Items here.
|
|
; You can't use spaces in keys/values/section names.
|
|
|
|
; Don't worry about the order, the menu will be sorted.
|
|
|
|
MenuItems = Notepad/Calculator/Section 3/Section 4/Section 5
|
|
|
|
|
|
;___________________________________________
|
|
;______Dynamic menuitems here_______________
|
|
|
|
; Syntax:
|
|
; Dyn# = MenuItem|Window title
|
|
|
|
Dyn1 = MS Word|- Microsoft Word
|
|
Dyn2 = Notepad II|- Notepad
|
|
|
|
;___________________________________________
|
|
|
|
Exit
|
|
|
|
|
|
;___________________________________________
|
|
;_____Menu Sections_________________________
|
|
|
|
; Create / Edit Menu Sections here.
|
|
|
|
Notepad:
|
|
Run, Notepad.exe
|
|
Return
|
|
|
|
Calculator:
|
|
Run, Calc
|
|
Return
|
|
|
|
Section3:
|
|
MsgBox, You selected 3
|
|
Return
|
|
|
|
Section4:
|
|
MsgBox, You selected 4
|
|
Return
|
|
|
|
Section5:
|
|
MsgBox, You selected 5
|
|
Return
|
|
|
|
MSWord:
|
|
msgbox, this is a dynamic entry (word)
|
|
Return
|
|
|
|
NotepadII:
|
|
msgbox, this is a dynamic entry (notepad)
|
|
Return
|
|
|
|
|
|
;___________________________________________
|
|
;_____Hotkey Section________________________
|
|
|
|
~MButton::
|
|
HowLong = 0
|
|
Loop
|
|
{
|
|
HowLong ++
|
|
Sleep, 10
|
|
GetKeyState, MButton, MButton, P
|
|
IfEqual, MButton, U, Break
|
|
}
|
|
IfLess, HowLong, %UMDelay%, Return
|
|
|
|
|
|
;prepares dynamic menu
|
|
DynMenu =
|
|
Loop
|
|
{
|
|
IfEqual, Dyn%a_index%,, Break
|
|
|
|
StringGetPos, ppos, dyn%a_index%, |
|
|
StringLeft, item, dyn%a_index%, %ppos%
|
|
ppos += 2
|
|
StringMid, win, dyn%a_index%, %ppos%, 1000
|
|
|
|
IfWinActive, %win%,
|
|
DynMenu = %DynMenu%/%item%
|
|
}
|
|
|
|
|
|
;Joins sorted main menu and dynamic menu
|
|
Sort, MenuItems, D/
|
|
TempMenu = %MenuItems%%DynMenu%
|
|
|
|
|
|
;clears earlier entries
|
|
Loop
|
|
{
|
|
IfEqual, MenuItem%a_index%,, Break
|
|
MenuItem%a_index% =
|
|
}
|
|
|
|
;creates new entries
|
|
Loop, Parse, TempMenu, /
|
|
{
|
|
MenuItem%a_index% = %a_loopfield%
|
|
}
|
|
|
|
;creates the menu
|
|
Menu = %MenuTitle%
|
|
Loop
|
|
{
|
|
IfEqual, MenuItem%a_index%,, Break
|
|
numItems ++
|
|
StringTrimLeft, MenuText, MenuItem%a_index%, 0
|
|
Menu = %Menu%`n%MenuText%
|
|
}
|
|
|
|
MouseGetPos, mX, mY
|
|
HotKey, ~LButton, MenuClick
|
|
HotKey, ~LButton, On
|
|
ToolTip, %Menu%, %mX%, %mY%
|
|
WinActivate, %MenuTitle%
|
|
Return
|
|
|
|
|
|
MenuClick:
|
|
HotKey, ~LButton, Off
|
|
IfWinNotActive, %MenuTitle%
|
|
{
|
|
ToolTip
|
|
Return
|
|
}
|
|
|
|
MouseGetPos, mX, mY
|
|
ToolTip
|
|
mY -= 3 ;space after which first line starts
|
|
mY /= 13 ;space taken by each line
|
|
IfLess, mY, 1, Return
|
|
IfGreater, mY, %numItems%, Return
|
|
StringTrimLeft, TargetSection, MenuItem%mY%, 0
|
|
StringReplace, TargetSection, TargetSection, %a_space%,, A
|
|
Gosub, %TargetSection%
|
|
Return
|