Skip to content

Instantly share code, notes, and snippets.

@Arecsu
Last active December 19, 2024 15:56
Show Gist options
  • Save Arecsu/6680464e159c11425bba413e301e2e54 to your computer and use it in GitHub Desktop.
Save Arecsu/6680464e159c11425bba413e301e2e54 to your computer and use it in GitHub Desktop.
Figma Slides — Improved Mouse Control for Presentations
; -------------------------------------------------
; 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