I already use most of these (for their intended purpose) on the non G-shift side.
I have G9 bound to start a script that locks mouse movement. I wrote it quite some time ago as part of my mouse script. Here it is if you were wondering:
#include <WinAPI.au3>
Opt("TrayIconHide", 1)
Global $locked = 1
Global $pStub_MouseProc = DllCallbackRegister ("_Mouse_Handler", "int", "int;ptr;ptr")
Global $hHookMouse = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($pStub_MouseProc), _WinAPI_GetModuleHandle(0), 0)
while $locked
sleep(100)
WEnd
DllCallbackFree($pStub_MouseProc)
_WinAPI_UnhookWindowsHookEx($hHookMouse)
Exit
Func _Mouse_Handler($nCode, $wParam, $lParam)
local $info
If $nCode < 0 Or $locked = 0 Then Return _WinAPI_CallNextHookEx($hHookMouse, $nCode, $wParam, $lParam)
If $wParam = 0x00000200 Then Return 1
$locked = 0
EndFunc
But yeah, I'm pretty sure buttons getting stuck down is the fault of the mouse. Some of the functions in my script do different things when a button is held down or pressed multiple times. Using these is where it happens most often.