Instantly share code, notes, and snippets.
Last active
September 15, 2015 09:09
-
Star
(5)
5
You must be signed in to star a gist -
Fork
(0)
0
You must be signed in to fork a gist
-
Save holgate/01d73c6ac33ab4b6d66f 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 "Default"
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 "Default"... | |
; | |
; MAIN MENU | |
mainmenuHeaderTop := 140 ;top categories text start Y pos | |
mainmenuGridTop := 182 ;top thumbs start Y pos | |
mainmenuStartXpos := 800 ; init X position | |
mainmenuStartYpos := 350 ; init Y position | |
mainmenuThumbDisplacementX := 141 | |
mainmenuThumbDisplacementY := 196 | |
; SEARCH MENU | |
searchButtonXpos := 1718 | |
searchButtonYpos := 70 | |
; SEARCH RESULTS | |
searchresultsStartXpos := 560 ; init X position | |
searchresultsStartYpos := 265 ; init Y position | |
; NAV MENU | |
navmenuButtonXpos := 1646 | |
navmenuButtonYpos := 69 | |
navmenuFirstMenuButtonXpos := 156 | |
navmenuFirstMenuButtonYpos := 63 | |
navmenuThumbDisplacementX := 267 | |
navmenuThumbDisplacementY := 44 | |
; CATEGORIES MENU | |
categoriesButtonXpos := 1900 | |
categoriesButtonYpos := 1047 | |
categoriesFirstMenuButtonXpos := 174 | |
categoriesFirstMenuButtonYpos := 304 | |
categoriesThumbDisplacementX := 195 | |
categoriesThumbDisplacementY := 265 | |
; DETAILS PAGE | |
backnavXpos := 38 ; top back nav button X pos | |
backnavYpos := 68 ; top back nav button Y pos | |
seasonButtonXpos := 228 | |
seasonButtonYpos := 368 | |
seasonButtonRowHeight := 46 | |
detailsHeaderTop := 368 ;top season selector button start Y pos | |
detailsGridTop := 416 ;top thumbs start Y pos | |
detailsStartXpos := 268 ; init X position | |
detailsStartYpos := 518 ; init Y position | |
detailsThumbDisplacementX := 381 | |
detailsThumbDisplacementY := 0 | |
; PLAYING MEDIA | |
; SKIP/NAV CONTROLS | |
skipnextXpos := 330 | |
skipnextYpos := 100 | |
skipprevXpos := 167 | |
skipprevYpos := 100 | |
; TIMELINE BAR | |
timelinebar0Xpos := 114 | |
timelinebar0Ypos := 944 | |
timelinebar100Xpos := 1764 | |
timelinebar100Ypos := 944 | |
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 := 1656 | |
nextepisodeYpos := 1024 | |
episodesmenuXpos := 1760 | |
episodesmenuYpos := 1024 | |
languagesmenuXpos := 1856 | |
languagesmenuYpos := 1024 | |
; | |
;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: | |
REMAPPING INFO
Some keys will behave differently on your system. Namely, to:
Skip back / Rewind during playback
- pressing Media_Prev (aka SkipPrev) on my remote is the same as pressing the Alt-Win-P key combo, thanks to a few settings in Promixis Girder which runs in the background. However, you can probably achieve the same result with Autohotkey/EventGhost
Skip back to beginning during playback
- holding down Media_Prev (aka SkipPrev) for a couple of seconds
Access Episodes menu during playback (currently useless as navigating this menu has not yet been developed)
- press Info button on remote = Alt-Win-I key combo
Access Navmenu on the top-level Netflix menu
- press the Small Red button at the bottom of remote = Alt-Win-R key combo
Access Search on the top-level Netflix menu
- press the Small Green button at the bottom of remote = Alt-Win-G key combo
Access Categories Grid Menu on the top-level Netflix menu
- press the Small Yellow button at the bottom of remote = Alt-Win-Y key combo
NOTE:
Newer version of this tool available here: http://sticky-ux.com/apps/NetflixRemoteController/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
INSTALLATION INFO - FOR THE 'DEFAULT' SIZE
If your display isn't set to 1920x1080 pixels you'll likely need to modify the coordinates.
NOTE: tested/working with MCE/Media Center Remote, and Zotac remote