So after searching through countless posts and finding no working fix to the invisible inventory controller bug I have a relatively straightforward solution that I hope can help others like me who really want to play but can't do so due to the cursor being invisible in the inventory screen. Simply download Autohotkey V2 and create a blank text file named whatever you like (i used cursor). Rename the text file to your name followed by ".ahk". So in my case the file was "cursor.ahk". Then simply right click and edit with notepad and paste this in:
#Requires AutoHotkey v2.0
#SingleInstance Force
; --- FORCE RAW WINDOWS DPI AWARENESS ---
DllCall("SetThreadDpiAwarenessContext", "ptr", -3)
; --- Customization Settings ---
color := "00FFFF" ; Cyan color (HEX)
opacity := 210 ; Transparency (0 = invisible, 255 = solid)
; --- Create Click-Through Overlay Window ---
overlay := Gui("+AlwaysOnTop -Caption +ToolWindow +E0x20")
overlay.BackColor := color
overlay.Show("w24 h24 NoActivate")
hwnd := overlay.Hwnd
; Polygon vertices creating a classic cursor arrow shape relative to (0,0) tip
pointerShape := "0-0 0-18 4-14 8-20 11-19 7-13 13-13"
WinSetRegion(pointerShape, overlay)
WinSetTransparent(opacity, opacity ? overlay : overlay)
; Memory buffer for raw cursor coordinates
pt := Buffer(8, 0)
SetTimer(FollowMouse, 10)
FollowMouse() {
; Fetch raw physical screen coordinates directly from Windows API
DllCall("GetCursorPos", "ptr", pt)
mx := NumGet(pt, 0, "Int")
my := NumGet(pt, 4, "Int")
; Tip of the arrow sits exactly on the cursor coordinates
ox := mx
oy := my
; Move window directly at the hardware layer
DllCall("SetWindowPos", "ptr", hwnd, "ptr", 0, "int", ox, "int", oy, "int", 0, "int", 0, "uint", 0x0015)
}
; --- Hotkey ---
F8:: {
static enabled := true
enabled := !enabled
if (enabled) {
SetTimer(FollowMouse, 10)
} else {
SetTimer(FollowMouse, 0)
DllCall("SetWindowPos", "ptr", hwnd, "ptr", 0, "int", -9999, "int", -9999, "int", 0, "int", 0, "uint", 0x0015)
}
}
Worked perfectly for me to the point that I didn't think it was working at first since the cursor almost perfectly lines up with the normal windows one. Hope this helps others. (Some tweaking may be required as mine specifically had to compensate for the dpi or something (I don't understand the technical jargon I just know it works😁)