
KeylessUniversal

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local CoreGui = game:GetService("CoreGui")
local GuiService = game:GetService("GuiService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui", 5)
-- Clean up any existing custom cursors to avoid bugs
if CoreGui:FindFirstChild("Cursor") then
CoreGui.Cursor:Destroy()
end
-- check for Roblox Esc Menu
local isEscMenuOpen = false
-- Load cursor asset
local success, assets = pcall(function()
return game:GetObjects("rbxassetid://17895536995")
end)
if success and assets and assets[1] then
local eazywin = assets[1]:Clone()
-- load on top of everything
if eazywin:FindFirstChild("LocalScript") then
eazywin.LocalScript:Destroy()
end
eazywin.DisplayOrder = 1999999999
eazywin.IgnoreGuiInset = true
eazywin.Y.Value = 6
eazywin.Parent = CoreGui
local imageLabel = eazywin:FindFirstChild("ImageLabel")
local actionLabel = imageLabel and imageLabel:FindFirstChild("action")
-- Listen to core Esc Menu states to handle automatic hiding
GuiService.MenuOpened:Connect(function()
isEscMenuOpen = true
end)
GuiService.MenuClosed:Connect(function()
isEscMenuOpen = false
end)
-- check if the cursor is hovering over a clickable UI
local function isHoveringClickableUI(mousePos)
if not PlayerGui then return false end
local guiObjects = PlayerGui:GetGuiObjectsAtPosition(mousePos.X, mousePos.Y)
for _, obj in ipairs(guiObjects) do
if obj:IsA("GuiButton") or obj:IsA("TextButton") or obj:IsA("ImageButton") then
return true
end
end
return false
end
-- Frame-by-frame execution loop
RunService.RenderStepped:Connect(function(step)
if not eazywin or not eazywin.Parent then return end
local mouse = LocalPlayer:GetMouse()
local mousePos = Vector2.new(mouse.X, mouse.Y)
-- Hovering over a ClickDetector part
local isHoveringWorldClickable = false
if mouse.Target and mouse.Target:FindFirstChildOfClass("ClickDetector") then
isHoveringWorldClickable = true
end
-- Hovering over a Clickable UI Button
local isHoveringUIButton = isHoveringClickableUI(mousePos)
-- for esc menu only
if isEscMenuOpen then
-- if esc menu is open then show only default Roblox mouse alone, since idk how to make the custom cursor take over there
UserInputService.MouseIconEnabled = true
if imageLabel then imageLabel.Visible = false end
if actionLabel then actionLabel.Visible = false end
elseif isHoveringWorldClickable then
-- Context A: if hovering a ClickDetector part then default Roblox cursor takes over to show the windows hand style
UserInputService.MouseIconEnabled = true
if imageLabel then imageLabel.Visible = false end
elseif isHoveringUIButton then
-- if hovering an interactable UI Button then custom cursor stays visible, show the question mark
UserInputService.MouseIconEnabled = false
if imageLabel then imageLabel.Visible = true end
if actionLabel then actionLabel.Visible = true end
else
-- Context C: if hovering default space then custom cursor stays visible, hide the question mark
UserInputService.MouseIconEnabled = false
if imageLabel then imageLabel.Visible = true end
if actionLabel then actionLabel.Visible = false end
end
-- perfectly position the custom cursor (moved down 26 pixels to be aligned)
if imageLabel and imageLabel.Visible then
local targetX = mouse.X - eazywin.X.Value
local targetY = mouse.Y - eazywin.Y.Value + 26
local tweenInfo = TweenInfo.new(step, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut)
local goalProperties = {Position = UDim2.new(0, targetX, 0, targetY)}
TweenService:Create(imageLabel, tweenInfo, goalProperties):Play()
end
end)
else
warn("Failed to fetch custom cursor asset.")
endNo comments yet for this script.

![Sir Meme Hub | [16 GAMES] [$14.99 LIFETIME] | FARM/AIM/ESP](https://scriptblox.com/images/script/-1-1791044877945.webp)

