Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save holgate/01d73c6ac33ab4b6d66f to your computer and use it in GitHub Desktop.
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"
;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:
@holgate
Copy link
Author

holgate commented Oct 15, 2014

INSTALLATION INFO - FOR THE 'DEFAULT' SIZE

  1. install Autohotkey
  2. in Windows 8.1's Search, search for "Change the Size of Apps on the screen" and make sure it is set to "Default" (although I'd recommend "Larger" option with this script instead: https://gist.github.com/holgate/7dcc49ef9d202a5a199e )
    If your display isn't set to 1920x1080 pixels you'll likely need to modify the coordinates.
  3. run this .ahk script
  4. start the Netflix metro app and press LEFT or RIGHT on the keyboard to test it out

NOTE: tested/working with MCE/Media Center Remote, and Zotac remote

@holgate
Copy link
Author

holgate commented Oct 15, 2014

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

@holgate
Copy link
Author

holgate commented Sep 13, 2015

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