Instantly share code, notes, and snippets.
Last active
September 13, 2015 12:36
-
Save holgate/7dcc49ef9d202a5a199e to your computer and use it in GitHub Desktop.
Netflix Windows 8.1 Metro app - remote navigation for HTPC usage - with "Change the Size of Apps on the screen" in Windows 8.1 set to "Larger"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;DEFINE CONSTANTS... | |
; | |
; | |
; Global value settings that are independant to display-size... | |
; | |
; MAIN MENU | |
boundaryLeft := 120 | |
boundaryRight := 1800 | |
leftScrollbarXpos := 28 | |
leftScrollbarYpos := 1065 | |
rightScrollbarXpos := 1891 | |
rightScrollbarYpos := 1065 | |
; | |
; For 1920x1080px displays, with "Change the Size of Apps on the screen" set to "Larger"... | |
; | |
; MAIN MENU | |
mainmenuHeaderTop := 200 ;top categories text start Y pos | |
mainmenuGridTop := 257 ;top thumbs start Y pos | |
mainmenuStartXpos := 962 ; init X position | |
mainmenuStartYpos := 458 ; init Y position | |
mainmenuThumbDisplacementX := 176 | |
mainmenuThumbDisplacementY := 242 | |
; SEARCH MENU | |
searchButtonXpos := 1646 | |
searchButtonYpos := 100 | |
; SEARCH RESULTS | |
searchresultsStartXpos := 780 ; init X position | |
searchresultsStartYpos := 284 ; init Y position | |
; NAV MENU | |
navmenuButtonXpos := 1538 | |
navmenuButtonYpos := 100 | |
navmenuFirstMenuButtonXpos := 216 | |
navmenuFirstMenuButtonYpos := 87 | |
navmenuThumbDisplacementX := 373 | |
navmenuThumbDisplacementY := 62 | |
; CATEGORIES MENU | |
categoriesButtonXpos := 1895 | |
categoriesButtonYpos := 1030 | |
categoriesFirstMenuButtonXpos := 239 | |
categoriesFirstMenuButtonYpos := 433 | |
categoriesThumbDisplacementX := 273 | |
categoriesThumbDisplacementY := 371 | |
; DETAILS PAGE | |
backnavXpos := 60 ; top back nav button X pos | |
backnavYpos := 102 ; top back nav button Y pos | |
seasonButtonXpos := 316 | |
seasonButtonYpos := 435 | |
seasonButtonRowHeight := 64 | |
detailsHeaderTop := 435 ;top season selector button start Y pos | |
detailsGridTop := 500 ;top thumbs start Y pos | |
detailsStartXpos := 316 ; init X position | |
detailsStartYpos := 610 ; init Y position | |
detailsThumbDisplacementX := 406 | |
detailsThumbDisplacementY := 0 | |
; PLAYING MEDIA | |
; SKIP/NAV CONTROLS | |
skipnextXpos := 460 | |
skipnextYpos := 140 | |
skipprevXpos := 234 | |
skipprevYpos := 140 | |
; TIMELINE BAR | |
timelinebar0Xpos := 160 | |
timelinebar0Ypos := 890 | |
timelinebar100Xpos := 1704 | |
timelinebar100Ypos := 890 | |
timelinebar10Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*1) + timelinebar0Xpos | |
timelinebar20Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*2) + timelinebar0Xpos | |
timelinebar30Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*3) + timelinebar0Xpos | |
timelinebar40Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*4) + timelinebar0Xpos | |
timelinebar50Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*5) + timelinebar0Xpos | |
timelinebar60Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*6) + timelinebar0Xpos | |
timelinebar70Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*7) + timelinebar0Xpos | |
timelinebar80Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*8) + timelinebar0Xpos | |
timelinebar90Xpos := ((timelinebar100Xpos - timelinebar0Xpos) /10*9) + timelinebar0Xpos | |
timelinebarColorHandle := "0x0A07B2" | |
timelinebarColorBg := "0x3F3F3F" | |
; FOOTER CONTROLS | |
nextepisodeXpos := 1554 | |
nextepisodeYpos := 1006 | |
episodesmenuXpos := 1695 | |
episodesmenuYpos := 1006 | |
languagesmenuXpos := 1834 | |
languagesmenuYpos := 1006 | |
; | |
;DEFINE VARIABLES... | |
currentView := "mainmenu" ;can be: mainmenu, mainmenu_category, details, details_seasonSelector, movie, search, searchresults, navmenu, categoryGrid | |
gridTop := mainmenuGridTop | |
; | |
; | |
CoordMode, Mouse, Screen ;Mouse coords used from here on will be absolute to the screen coordinates, not relative to the active window | |
#SingleInstance force ;Only one instance of script can run | |
#Persistent ;Make this script run indefinitely | |
#NoEnv | |
;#InstallKeybdHook | |
SetTitleMatchMode 3 | |
SetDefaultMouseSpeed, 0 ;Move the mouse instantly. | |
;SetTimer, checkNetflixExists, 2000 | |
;return | |
;checkNetflixExists: | |
#ifWinActive, Netflix | |
;IfWinNotActive, Netflix, , WinActivate, Netflix, | |
;WinWait, Netflix | |
;WinWaitActive, Netflix, | |
;{ | |
MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 ;Move the mouse to init location | |
;SetTimer, WatchCursor, 1000 | |
;settimer startMonitoring, 100 ;Run this function pretty much instantly straight afterwards | |
;return | |
Loop | |
{ | |
;startMonitoring: | |
Down:: | |
if (currentView = "details") | |
{ | |
;MouseMove, 0,%detailsThumbDisplacementY%, 0, R | |
MouseMove, 0,%mainmenuThumbDisplacementY%, 0, R ;TODO | |
} else if (currentView = "details_seasonSelector") { | |
MouseMove, 0,%seasonButtonRowHeight%, 0, R | |
} else if (currentView = "navmenu") { | |
MouseMove, 0,%navmenuThumbDisplacementY%, 0, R | |
} else if (currentView = "categoryGrid") { | |
MouseMove, 0,%categoriesThumbDisplacementY%, 0, R | |
} else { | |
MouseMove, 0,%mainmenuThumbDisplacementY%, 0, R | |
} | |
Goto, checkBounds | |
return | |
Up:: | |
if (currentView = "details") | |
{ | |
;MouseMove, 0,-%detailsThumbDisplacementY%, 0, R | |
MouseMove, 0,-%mainmenuThumbDisplacementY%, 0, R ;TODO | |
} else if (currentView = "details_seasonSelector") { | |
MouseMove, 0,-%seasonButtonRowHeight%, 0, R | |
} else if (currentView = "navmenu") { | |
MouseMove, 0,-%navmenuThumbDisplacementY%, 0, R | |
} else if (currentView = "categoryGrid") { | |
MouseMove, 0,-%categoriesThumbDisplacementY%, 0, R | |
} else { | |
MouseMove, 0,-%mainmenuThumbDisplacementY%, 0, R | |
} | |
Goto, checkBounds | |
return | |
Right:: | |
; Move the mouse by X pixels Right from its current location: | |
;MouseMove, %mainmenuThumbDisplacementX%,0, 0, R | |
MouseGetPos, mouseXpos, mouseYpos | |
if (currentView = "details") | |
{ | |
MouseMove, %detailsThumbDisplacementX%, 0, 0, R | |
} else if (currentView = "details_seasonSelector") { | |
} else if (currentView = "navmenu") { | |
MouseMove, %navmenuThumbDisplacementX%, 0, 0, R | |
} else if (currentView = "categoryGrid") { | |
MouseMove, %categoriesThumbDisplacementX%, 0, 0, R | |
} else { | |
MouseMove, %mainmenuThumbDisplacementX%, 0, 0, R | |
} | |
Goto, checkBounds | |
return | |
Left:: | |
; Move the mouse by X pixels Left from its current location: | |
;MouseMove, -%mainmenuThumbDisplacementX%,0, 0, R | |
MouseGetPos, mouseXpos, mouseYpos | |
if (currentView = "details") | |
{ | |
MouseMove, -%detailsThumbDisplacementX%, 0, 0, R | |
} else if (currentView = "details_seasonSelector") { | |
} else if (currentView = "navmenu") { | |
MouseMove, -%navmenuThumbDisplacementX%, 0, 0, R | |
} else if (currentView = "categoryGrid") { | |
MouseMove, -%categoriesThumbDisplacementX%, 0, 0, R | |
} else { | |
MouseMove, -%mainmenuThumbDisplacementX%, 0, 0, R | |
} | |
Goto, checkBounds | |
return | |
F9:: | |
; Reset init pos | |
MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 | |
return | |
ENTER:: | |
; Select | |
;currentView := "details" | |
;MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 | |
MouseGetPos, savedXpos, savedYpos ;save position of currently selected menu item | |
Click | |
if (currentView="details" and savedXpos=seasonButtonXpos and savedYpos=seasonButtonYpos) | |
{ | |
currentView := "details_seasonSelector" | |
;MsgBox, currentView | |
} else if (currentView="details_seasonSelector") { | |
currentView := "details" | |
MouseMove, %detailsStartXpos%, %detailsStartYpos%, 0 | |
} else if (currentView="details") { | |
savedDetailsXpos := savedXpos ;save position of currently selected menu item | |
savedDetailsYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "movie" | |
} else if (currentView="mainmenu" and savedYpos<mainmenuGridTop) { ;i.e. if user selected a category at top of manimenu grid | |
savedMainmenuXpos := savedXpos ;save position of currently selected menu item | |
savedMainmenuYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "mainmenu_category" | |
MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 | |
} else if (currentView="navmenu") { | |
savedNavmenuXpos := savedXpos ;save position of currently selected menu item | |
savedNavmenuYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "mainmenu_category" | |
MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 | |
} else if (currentView="categoryGrid") { | |
savedCategoryXpos := savedXpos ;save position of currently selected menu item | |
savedCategoryYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "mainmenu" | |
MouseMove, %mainmenuStartXpos%, %mainmenuStartYpos%, 0 | |
} else if (currentView="searchresults") { | |
savedSearchresultsXpos := savedXpos ;save position of currently selected menu item | |
savedSearchresultsYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "details" | |
MouseMove, %detailsStartXpos%, %detailsStartYpos%, 0 | |
} else { ;i.e. if in "mainmenu" view... | |
savedMainmenuXpos := savedXpos ;save position of currently selected menu item | |
savedMainmenuYpos := savedYpos ;save position of currently selected menu item | |
Sleep, 100 | |
currentView := "details" | |
MouseMove, %detailsStartXpos%, %detailsStartYpos%, 0 | |
} | |
return | |
;Media_Prev:: | |
; Skip_Next | |
;Sleep, 100 | |
;Click %timelinebar0Xpos%, %timelinebar0Ypos% | |
;Sleep, 100 | |
;Click %timelinebar0Xpos%, %timelinebar0Ypos% | |
;return | |
;Media_Next:: | |
; Skip_Next | |
;Sleep, 100 | |
;Click %skipnextXpos%, %skipnextYpos% | |
;return | |
;Media_Prev | |
!#P:: ; !=Alt; #=Windowskey; ^=Ctrl; +=Shift | |
KeyWait, P, T0.5 ;wait for Xseconds ;NOTE: "KeyWait, Media_Prev, T1" doesnt work because it's a Media button and not a physical/logical button apparently, hence why I remapped this button!?! | |
If ErrorLevel = 0 | |
{ | |
;SHORT PRESS | |
lastKeyPressed := "skipPrev" | |
Goto, GetProgress | |
return | |
} | |
Else | |
{ | |
;LONG PRESS | |
;go to timecode 0:00 | |
MouseGetPos, MouseX, MouseY | |
MouseMove, MouseX+1, MouseY+1, 0 ;move the mouse to make the progess bar appear | |
;Click right ;click right mouse button to make the progess bar appear | |
Sleep, 500 ;wait for UI to react/update | |
jumpPos := timelinebar0Xpos | |
Goto, jumpToTimelinePos | |
} | |
return | |
Media_Next:: | |
lastKeyPressed := "skipNext" | |
Goto, GetProgress | |
return | |
GetProgress: | |
MouseGetPos, MouseX, MouseY | |
MouseMove, MouseX+1, MouseY+1, 0 ;move the mouse to make the progess bar appear | |
;Click right ;click right mouse button to make the progess bar appear | |
Sleep, 500 ;wait for UI to react/update | |
PixelGetColor, barColor, timelinebar10Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 0 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar0Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar10Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar20Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 10 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar0Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar20Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar30Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 20 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar10Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar30Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar40Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 30 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar20Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar40Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar50Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 40 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar30Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar50Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar60Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 50 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar40Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar60Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar70Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 60 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar50Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar70Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar80Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 70 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar60Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar80Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar90Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 80 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar70Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar90Xpos | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
PixelGetColor, barColor, timelinebar100Xpos, timelinebar0Ypos | |
if (barColor = timelinebarColorBg) { | |
barProgress := 90 | |
if (lastKeyPressed = "skipPrev") { | |
jumpPos := timelinebar80Xpos | |
} else if (lastKeyPressed = "skipNext") { | |
jumpPos := timelinebar100Xpos - 80 ;minus credits buffer | |
} | |
Goto, jumpToTimelinePos | |
return | |
} | |
return | |
jumpToTimelinePos: | |
;MsgBox progress bar is at %barProgress% | |
Click %jumpPos%, %timelinebar0Ypos% | |
return | |
;timelinebar90Xpos | |
;timelinebarColorHandle | |
;timelinebarColorBg | |
; Next Episode | |
;Sleep, 100 | |
;Click %nextepisodeXpos%, %nextepisodeYpos% | |
;return | |
!#I:: ; !=Alt; #=Windowskey; ^=Ctrl; +=Shift | |
; Info button | |
;Sleep, 100 | |
Click %episodesmenuXpos%, %episodesmenuYpos% | |
return | |
Browser_Back:: | |
; Back | |
if (currentView = "details_seasonSelector") | |
{ | |
Send {Escape} ;to exit out of navMenu | |
currentView := "details" | |
} else if (currentView = "movie") { | |
Click %backnavXpos%, %backnavYpos% | |
Send {Escape} ;to exit out of navMenu | |
Sleep, 100 | |
MouseMove, savedDetailsXpos,savedDetailsYpos, 0 | |
currentView := "details" | |
} else if (currentView = "searchresults") { | |
Click %backnavXpos%, %backnavYpos% | |
Send {Escape} ;to exit out of navMenu | |
Sleep, 100 | |
MouseMove, savedMainmenuXpos,savedMainmenuYpos, 0 | |
currentView := "mainmenu" | |
} else { ;i.e. if in "details" view, or a sub-category view in the mainmenu... | |
Click %backnavXpos%, %backnavYpos% | |
Send {Escape} ;to exit out of navMenu | |
Sleep, 100 | |
MouseMove, savedMainmenuXpos,savedMainmenuYpos, 0 | |
currentView := "mainmenu" | |
} | |
return | |
!#G:: ; !=Alt; #=Windowskey; ^=Ctrl; +=Shift | |
;MsgBox backPRessed | |
; Search | |
Click %searchButtonXpos%, %searchButtonYpos% | |
Sleep, 100 | |
MouseMove, searchresultsStartXpos, searchresultsStartYpos, 0 | |
currentView := "searchresults" | |
return | |
!#R:: ; !=Alt; #=Windowskey; ^=Ctrl; +=Shift | |
; navmenu (accessed via Hamburger icon) | |
MouseGetPos, savedMainmenuXpos, savedMainmenuYpos ;save position of currently selected menu item | |
Click %navmenuButtonXpos%, %navmenuButtonYpos% | |
Sleep, 100 | |
MouseMove, navmenuFirstMenuButtonXpos,navmenuFirstMenuButtonYpos, 0 | |
currentView := "navmenu" | |
return | |
!#Y:: ; !=Alt; #=Windowskey; ^=Ctrl; +=Shift | |
; categoryGrid (accessed via '-' icon in bottom right) | |
MouseGetPos, savedMainmenuXpos, savedMainmenuYpos ;save position of currently selected menu item | |
Click %categoriesButtonXpos%, %categoriesButtonYpos% | |
Sleep, 100 | |
MouseMove, categoriesFirstMenuButtonXpos,categoriesFirstMenuButtonYpos, 0 | |
currentView := "categoryGrid" | |
return | |
checkBounds: | |
MouseGetPos, mouseXpos, mouseYpos | |
;MsgBox, %currentView% | |
if (currentView = "details") { | |
;MsgBox, itsOnDetails | |
;gridTop = %detailsGridTop% | |
if (mouseYpos < detailsGridTop) { | |
MouseMove, %seasonButtonXpos%, %seasonButtonYpos%, 0 | |
return | |
} | |
if (mouseXpos < boundaryLeft) { | |
;SendRaw {Left} | |
;MouseGetPos, mouseXpos, mouseYpos | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
;MouseMove, %mouseXpos%, %mouseYpos%, 0 ;move it back to where it was | |
MouseMove, %boundaryLeft%, %mouseYpos%, 0 ;temp | |
;Send {PgUp} | |
return | |
} else if (mouseXpos > boundaryRight) { | |
;SendInput {Right} | |
;MouseGetPos, mouseXpos, mouseYpos | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
;MouseMove, %mouseXpos%, %mouseYpos%, 0 ;move it back to where it was | |
MouseMove, %boundaryRight%, %mouseYpos%, 0 ;temp | |
;Send {PgDn} | |
return | |
} | |
} else if (currentView = "navmenu") { | |
} else { | |
;MsgBox, %currentView% | |
;gridTop = %mainmenuGridTop% | |
if (mouseYpos < mainmenuHeaderTop) { | |
MouseMove, %mouseXpos%, %mainmenuHeaderTop%, 0 | |
return | |
} | |
if (mouseXpos < boundaryLeft) { | |
;SendRaw {Left} | |
MouseMove, %boundaryLeft%, %mouseYpos%, 0 ;temp | |
if (currentView = "mainmenu_category") { | |
;Send {PgUp} | |
MouseGetPos, mouseXpos, mouseYpos | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
Click %leftScrollbarXpos%, %leftScrollbarYpos% | |
MouseMove, %mouseXpos%, %mouseYpos%, 0 ;move it back to where it was | |
} else { | |
Click WheelLeft | |
} | |
return | |
} else if (mouseXpos > boundaryRight) { | |
;SendInput {Right} | |
MouseMove, %boundaryRight%, %mouseYpos%, 0 ;temp | |
if (currentView = "mainmenu_category") { | |
;Send {PgDn} | |
MouseGetPos, mouseXpos, mouseYpos | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
Click %rightScrollbarXpos%, %rightScrollbarYpos% | |
MouseMove, %mouseXpos%, %mouseYpos%, 0 ;move it back to where it was | |
} else { | |
Click WheelRight | |
} | |
return | |
} | |
} | |
return | |
;#ifWinActive | |
;Esc::ExitApp | |
;Sleep, 1000 ; 1 second | |
} | |
return | |
;WatchCursor: | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
REMAPPING INFO
Some keys will behave differently on your system. Namely, to:
Skip back / Rewind during playback
Skip back to beginning during playback
Access Episodes menu during playback (currently useless as navigating this menu has not yet been developed)
Access Navmenu on the top-level Netflix menu
Access Search on the top-level Netflix menu
Access Categories Grid Menu on the top-level Netflix menu