-
-
Save n18l/c269fc5a5e3b3765fbca839cafd742b5 to your computer and use it in GitHub Desktop.
| #NoTrayIcon | |
| #NoEnv | |
| #Persistent | |
| #SingleInstance Force | |
| SendMode Input | |
| CoordMode, Mouse, Screen | |
| ; Tracks whether a hot corner was just activated, preventing it from being | |
| ; activated repeatedly. | |
| global PreviousCorner := "None" | |
| ; A comma-separated list of process names. If one of these processes is the | |
| ; active window when a hot corner is activated, the hot corner action will be | |
| ; ignored. Great for full-screen games! | |
| ; | |
| ; To get a program's process name, open the Task Manager, find the program in | |
| ; the list (you may need to click "More details" and then expand the program's | |
| ; processes using an arrow), right click it and select "Go to details". | |
| ExcludedProcesses := "FactoryGame-Win64-Shipping.exe,League of Legends.exe" | |
| ; The actions to take when activating specific corners. Refer to AutoHotKey's | |
| ; documentation (https://www.autohotkey.com/docs/Hotkeys.htm) for ideas on what | |
| ; you can do here. | |
| UpperLeftAction() { | |
| Send, #{Tab} | |
| } | |
| UpperRightAction() { | |
| Send, #a | |
| } | |
| LowerLeftAction() { | |
| } | |
| LowerRightAction() { | |
| } | |
| ; Kick off the hot corners routine on a repeating timer. | |
| SetTimer, HotCorners, 10 | |
| return | |
| ; The primary routine for monitoring hot corners and triggering actions. | |
| HotCorners: | |
| ; Check for the process name of the active window. | |
| WinGet, ActiveProcessName, ProcessName, A | |
| ; Only proceed if the active process is not in the exclusion list. | |
| if ActiveProcessName in % ExcludedProcesses | |
| return | |
| ; Identify the currently active corner, if any. | |
| CurrentCorner := GetCurrentCorner(10) | |
| ; Only proceed if the current corner isn't the same as the previous check, | |
| ; preventing commands from being sent repeatedly when holding the mouse to | |
| ; a corner. | |
| if (CurrentCorner != PreviousCorner) { | |
| ; Trigger the appropriate corner action. | |
| Switch CurrentCorner { | |
| Case "UpperLeft": UpperLeftAction() | |
| Case "UpperRight": UpperRightAction() | |
| Case "LowerLeft": LowerLeftAction() | |
| Case "LowerRight": LowerRightAction() | |
| } | |
| } | |
| ; Store the activated corner for future comparison. | |
| PreviousCorner := CurrentCorner | |
| return | |
| ; Retrieves the currently activated hot corner based on the current mouse cursor | |
| ; position, to within the specified pixel tolerance. A higher tolerance results | |
| ; in "larger" hot corners. | |
| GetCurrentCorner(Tolerance) { | |
| MouseGetPos, MouseX, MouseY | |
| if (MouseY < Tolerance) && (MouseX < Tolerance) | |
| return "UpperLeft" | |
| if (MouseY < Tolerance) && (MouseX > (A_ScreenWidth - Tolerance)) | |
| return "UpperRight" | |
| if (MouseY > (A_ScreenHeight - Tolerance)) && (MouseX < Tolerance) | |
| return "LowerLeft" | |
| if (MouseY > (A_ScreenHeight - Tolerance)) && (MouseX > (A_ScreenWidth - Tolerance)) | |
| return "LowerRight" | |
| return "None" | |
| } |
Hi, Thanks for the release. I don't get
; Tracks whether a hot corner was just activated, preventing it from being ; activated repeatedly. global PreviousCorner := "None"section, can you explain a little bit? I want to achieve for prevent opening right corner repeatedly.
Hey @crestcere! When I first put this script together, I found that my corner actions would fire repeatedly if I held my mouse to a corner since the routine is technically checking multiple times a second. I only wanted it to fire once when my cursor entered a corner area, and not fire again until the cursor had been moved away.
The code you asked about sets up a variable that tracks the name of the most recently activated corner—or "None" when your cursor leaves a corner. We then double-check that value when entering a corner to ensure we don't activate the same corner more than once without a change in between.
Hi,
Thanks for the release.
I don't get
section, can you explain a little bit? I want to achieve for prevent opening right corner repeatedly.