commit 6a0f2b940317b13c04aa5c591bf995fe1c1ca9dd Author: cecilkorik Date: Fri May 17 23:20:52 2019 -0400 First version GamepadUI diff --git a/.hgignore b/.hgignore new file mode 100644 index 0000000..ca7c75e --- /dev/null +++ b/.hgignore @@ -0,0 +1,3 @@ +syntax:glob +chromium +*.mp4 diff --git a/GamepadUI.ahk b/GamepadUI.ahk new file mode 100755 index 0000000..0270fe8 --- /dev/null +++ b/GamepadUI.ahk @@ -0,0 +1,325 @@ +#SingleInstance Ignore +;FormatTime,TS,,yyyy-MM-dd-HH:mm:ss +;FileAppend,%TS%> -- SCRIPT STARTUP -- `n,C:\GamepadUI\debug.txt + + +Gui,Bg:New +Gui,Bg:Color,Black,000000 +Gui,Bg:-Caption +AlwaysOnTop E0x08000000 +Gui,Bg:+hwndGuiBg +Gui,Bg:Show, h1080 w1920 x0 y0 +Gui,Bg:Add, ActiveX, x0 y0 w1920 h1080 vWB, Shell.Explorer +WB.silent := true ;Surpress JS Error boxes +WB.Navigate("file:///c:/GamepadUI/bg_display.html") + +repeats := 0 +menuitem := 0 +menuitem_skipmax := 7 +menuitem_max := 7 +shutting_down := 0 +og_menu := 0 +RepeatDelay := -1 +RepeatDelay2 := -1 +Setting_RepeatDelayPolling := 125 +Setting_RepeatDelayFirst := 350 +Setting_RepeatDelayAgain := 140 + +SetTimer, WatchJoy, %Setting_RepeatDelayPolling% +GoSub redraw_menu + +Esc:: + Gosub really_exit +return + +really_exit: + Gui,Main:Destroy + Gui,Bg:Destroy + exitapp +return + + + +menu_prev: + menuitem-- + if( menuitem < 0 ) + { + menuitem := menuitem_max + } + GoSub redraw_menu +return + + +menu_next: + menuitem++ + if( menuitem >= menuitem_max ) + { + menuitem := 0 + } + GoSub redraw_menu +return + + +menu_click: + if ( shutting_down == 1 ) { + return + } + + if ( og_menu == 1 ) + { + + } + else + { + + if ( menuitem == 0 ) { + GoSub load_screen + Run, C:\Retroarch\Retroarch.exe + GoSub load_screen_finish + } + if ( menuitem == 1 ) { + GoSub load_screen + Run, C:\Program Files (x86)\Steam\Steam.exe -start steam://open/bigpicture/library + GoSub load_screen_finish + } + if ( menuitem == 2 ) { + ; Other Games + og_menu := 1 + GoSub redraw_menu + } + if ( menuitem == 3 ) { + GoSub load_screen + Run, c:\GamepadUI\Chromium\bin\chrome.exe https://www.cravetv.ca/ --start-fullscreen + GoSub load_screen_finish + } + if ( menuitem == 4 ) { + GoSub load_screen + Run, C:\Kodi\Kodi.exe + GoSub load_screen_finish + } + if ( menuitem == 5 ) { + Gosub really_exit + } + if ( menuitem == 6 ) { + Gosub really_exit + } + if ( menuitem == 7 ) { + ; restart system + Shutdown, 6 + } + } + +return + +load_screen: + Gui,Bg:-AlwaysOnTop + Gui,Main:Destroy + Gui,Main:New + Gui,Main:Color,0E0A09 + Gui,Main:-AlwaysOnTop +OwnerBg + Gui,Main:+hwndGuiMain + Gui,Main:Show, h1080 w1920 x0 y0 + WinSet, TransColor, 0E0A09, ahk_id %GuiMain% + Gui,Main:-Caption + Gui,Main:Font,Tahoma s46 + + ;MsgBox, yval = %yval% = %menuitem% = %menuitem_max% + + Gui,Main:Add, Text,cWhite w550 x650 y400,Please Wait! Loading ... + shutting_down := 1 + SetTimer, cleanup_timer, 100 +return + +load_screen_finish: + sleep 15000 + Gosub really_exit + +return + +cleanup_timer: + WinGetTitle, Title, A + + if ( Title != "GamepadUI.ahk" ) { + Gosub really_exit + } +return + +redraw_menu: + if ( shutting_down == 1 ) { + return + } + + yval := 550 + (menuitem * 50) + Gui,Main:Destroy + Gui,Main:New + Gui,Main:Color,0E0A09 + Gui,Main:+AlwaysOnTop +OwnerBg + Gui,Main:+hwndGuiMain + Gui,Main:Show, h1080 w1920 x0 y0 + WinSet, TransColor, 0E0A09, ahk_id %GuiMain% + Gui,Main:-Caption + Gui,Main:Font,Tahoma s28 + + ;MsgBox, yval = %yval% = %menuitem% = %menuitem_max% + Gui,Main:Add, Text,cWhite w350 x1180 y%yval% 0x12, + + if ( og_menu == 1 ) { + Gui,Main:Add, Text,cWhite w550 x1200 y550,Fortnite + Gui,Main:Add, Text,cWhite w550 x1200 y600,Minecraft + Gui,Main:Add, Text,cWhite w550 x1200 y650,Terraria + Gui,Main:Add, Text,cWhite w550 x1200 y700,Other Games + Gui,Main:Add, Text,cWhite w550 x1200 y750,Other Games + Gui,Main:Add, Text,cWhite w550 x1200 y800,Exit and Resume + Gui,Main:Add, Text,cWhite w550 x1200 y850,Exit to Desktop + Gui,Main:Add, Text,cWhite w550 x1200 y900,Return To Main Menu + } + else + { + Gui,Main:Add, Text,cWhite w550 x1200 y550,Retro Console + Gui,Main:Add, Text,cWhite w550 x1200 y600,Steam Library + Gui,Main:Add, Text,cWhite w550 x1200 y650,Other Games + Gui,Main:Add, Text,cWhite w550 x1200 y700,CraveTV / HBO + Gui,Main:Add, Text,cWhite w550 x1200 y750,Kodi Media Player + Gui,Main:Add, Text,cWhite w550 x1200 y800,Exit and Resume + Gui,Main:Add, Text,cWhite w550 x1200 y850,Exit to Desktop + Gui,Main:Add, Text,cWhite w550 x1200 y900,Reboot + } +return + + + +WatchJoy: + delayed := 0 + GetKeyState, POV, JoyPOV ; Get position of the POV control. + GetKeyState, POV2, 2JoyPOV ; Get position of the POV control. + PovDirPrev = %PovDir% ; Prev now holds the key that was down before (if any). + PovDir2Prev = %Pov2Dir% ; Prev now holds the key that was down before (if any). + + if ( ( POV < 0 ) && ( POV2 < 0 ) ) { + return + } + + FormatTime,TS,,yyyy-MM-dd-HH:mm:ss + ;FileAppend,%TS%> Pov=%POV% LastPov=%PovDirPrev%`n,C:\GamepadUI\debug.txt + ; Some joysticks might have a smooth/continous POV rather than one in fixed increments. + ; To support them all, use a range: + if POV < 0 ; No angle to report + PovDir = 0 + else if POV > 27000 + PovDir = Up + else if POV between 0 and 8999 + PovDir = Up + else if POV between 9001 and 26999 + PovDir = Down + else + PovDir = 0 + + if ( PovDir != 0 ) { + if ( PovDir == PovDirPrev ) ; The correct key is already down (or no key is needed). + { + if ( RepeatDelay > 0 ) { + RepeatDelay := RepeatDelay - Setting_RepeatDelayPolling + ;FileAppend,%TS%> Waiting For Repeat=%repeats% RD=%RepeatDelay% POV=%POV% PovDir=%PovDir% LastPovDir=%PovDirPrev%`n,C:\GamepadUI\debug.txt + + delayed := 1 + } + else + { + + repeats++ + ;FileAppend,%TS%> Repeated=%repeats% RD=%RepeatDelay% POV=%POV% PovDir=%PovDir% LastPovDir=%PovDirPrev%`n,C:\GamepadUI\debug.txt + RepeatDelay := Setting_RepeatDelayAgain + delayed := 0 + } + } + else + { + + ; This is the first time this key is pressed, so we wait longer before repeating + RepeatDelay := Setting_RepeatDelayFirst + repeats := 0 + delayed := 0 + ;FileAppend,%TS%> First Press=%repeats% RD=%RepeatDelay% POV=%POV% PovDir=%PovDir% LastPovDir=%PovDirPrev%`n,C:\GamepadUI\debug.txt + } + } + + PovDir2Prev = %Pov2Dir% ; Prev now holds the key that was down before (if any). + + ; Some joysticks might have a smooth/continous POV rather than one in fixed increments. + ; To support them all, use a range: + if POV2 < 0 ; No angle to report + Pov2Dir = 0 + else if POV2 > 27000 + Pov2Dir = Up + else if POV2 between 0 and 8999 + Pov2Dir = Up + else if POV2 between 9001 and 26999 + Pov2Dir = Down + else + Pov2Dir = 0 + + if ( Pov2Dir != 0 ) { + if ( Pov2Dir == PovDir2Prev ) ; The correct key is already down (or no key is needed). + { + if ( RepeatDelay2 > 0 ) { + RepeatDelay2 := RepeatDelay2 - Setting_RepeatDelayPolling + + return ; Do nothing. + } + else + { + RepeatDelay2 := Setting_RepeatDelayAgain + } + } + else + { + ; This is the first time this key is pressed, so we wait longer before repeating + RepeatDelay2 := Setting_RepeatDelayFirst + } + } + + if ( delayed == 1 ) { + return + } + ;FileAppend,%TS%> Repeating=%repeats% RD=%RepeatDelay% POV=%POV% PovDir=%PovDir% LastPovDir=%PovDirPrev%`n,C:\GamepadUI\debug.txt + + + if ( ( PovDir == 0 ) && ( Pov2Dir == 0 ) ) { + return + } + + if ( ( PovDir == "Up" ) || ( Pov2Dir == "Up" ) ) { + GoSub menu_prev + } + + if ( ( PovDir == "Down" ) || ( Pov2Dir == "Down" ) ) { + GoSub menu_next + } +return + +Joy1:: + GoSub menu_click +return + +2Joy1:: + GoSub menu_click +return + +Joy2:: + GoSub menu_click +return + +2Joy2:: + GoSub menu_click +return + +Up:: + GoSub menu_prev +return + +Down:: + GoSub menu_next +return + +Enter:: + GoSub menu_click +return diff --git a/GuideButton.ahk b/GuideButton.ahk new file mode 100755 index 0000000..c30f8b6 --- /dev/null +++ b/GuideButton.ahk @@ -0,0 +1,3 @@ +vk07:: +Run, C:\GamepadUI\GamepadUI.ahk +return \ No newline at end of file diff --git a/bg_display.html b/bg_display.html new file mode 100755 index 0000000..2753de6 --- /dev/null +++ b/bg_display.html @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file