Last active
December 19, 2024 15:56
-
-
Save Arecsu/6680464e159c11425bba413e301e2e54 to your computer and use it in GitHub Desktop.
Figma Slides — Improved Mouse Control for Presentations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ------------------------------------------------- | |
; Figma Slides is beautiful! | |
; But we can't fully control the presentation | |
; using a mouse, which is a great tool to present | |
; while walking around the auditorium. | |
; | |
; This hack: | |
; 1. Adds Right Click support to go to the | |
; previous slide in Presenter Mode | |
; | |
; 2. Hides the cursor after not moving for | |
; 2 seconds in Presenter Mode | |
; | |
; 3. Left Click maintains the default behaviour | |
; of advancing to the next slide | |
; | |
; Need the cursor to not move? Put a little tape | |
; at the bottom of it :) | |
; ------------------------------------------------- | |
SetTitleMatchMode, 2 | |
Last_Move := A_TickCount | |
State := True | |
Loop | |
{ | |
MouseGetPos, Mouse_X, Mouse_Y | |
If(Mouse_X != Last_X || Mouse_Y != Last_Y) | |
{ | |
If(State == False) | |
SystemCursor("On") | |
State := True | |
Last_Move := A_TickCount | |
} | |
If(A_TickCount > Last_Move + 2000 && State == True && WinActive("Figma Slides")) ; Change the 2000 (ms) to the desired time | |
{ | |
SystemCursor("Off") | |
State := False | |
} | |
Last_X := Mouse_X, Last_Y := Mouse_Y | |
} | |
SystemCursor(OnOff=1) ; INIT = "I","Init"; OFF = 0,"Off"; TOGGLE = -1,"T","Toggle"; ON = others | |
{ | |
static AndMask, XorMask, $, h_cursor | |
,c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13 ; system cursors | |
, b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13 ; blank cursors | |
, h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12,h13 ; handles of default cursors | |
if (OnOff = "Init" or OnOff = "I" or $ = "") ; init when requested or at first call | |
{ | |
$ = h ; active default cursors | |
VarSetCapacity( h_cursor,4444, 1 ) | |
VarSetCapacity( AndMask, 32*4, 0xFF ) | |
VarSetCapacity( XorMask, 32*4, 0 ) | |
system_cursors = 32512,32513,32514,32515,32516,32642,32643,32644,32645,32646,32648,32649,32650 | |
StringSplit c, system_cursors, `, | |
Loop %c0% | |
{ | |
h_cursor := DllCall( "LoadCursor", "uint",0, "uint",c%A_Index% ) | |
h%A_Index% := DllCall( "CopyImage", "uint",h_cursor, "uint",2, "int",0, "int",0, "uint",0 ) | |
b%A_Index% := DllCall("CreateCursor","uint",0, "int",0, "int",0 | |
, "int",32, "int",32, "uint",&AndMask, "uint",&XorMask ) | |
} | |
} | |
if (OnOff = 0 or OnOff = "Off" or $ = "h" and (OnOff < 0 or OnOff = "Toggle" or OnOff = "T")) | |
$ = b ; use blank cursors | |
else | |
$ = h ; use the saved cursors | |
Loop %c0% | |
{ | |
h_cursor := DllCall( "CopyImage", "uint",%$%%A_Index%, "uint",2, "int",0, "int",0, "uint",0 ) | |
DllCall( "SetSystemCursor", "uint",h_cursor, "uint",c%A_Index% ) | |
} | |
} | |
RButton:: | |
If WinActive("Figma Slides") | |
{ | |
SendInput, {Left} | |
} | |
else | |
{ | |
SendInput, {RButton} | |
} | |
return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment