A method for programming a programmable remote control comprising the steps of: providing a graphical programming environment, the graphical programming environment being a software application; providing one or more user profiles which are accessible by said graphical programming environment; creating a first file with a layer of graphics corresponding to a physical button on a programmable remote control, said layer of graphics containing information indicating one or more functions of the corresponding physical button in connection with a first service or menu state on an on screen display, said at least one file being accessible by said graphical programming environment; using said graphical programming environment to cause said one or more functions to be performed by a programmable multimedia controller when the user presses said physical button; creating a second file with a layer of graphics corresponding to said physical button on said programmable remote control, said layer of graphics of said second file containing information indicating one or more different functions of the corresponding physical button in connection with a second service or menu state on said on screen display; using said graphical programming environment to cause said one or more different functions to be performed by said programmable multimedia controller when said user presses said physical button; using software to parse said first file or said second file to extract the layers of graphics that indicate said function or said different function; and passing commands to a control application programming interface 'API' to cause said function or said different function to be performed. providing a graphical programming environment, the graphical programming environment being a software application; providing one or more user profiles which are accessible by said graphical programming environment; creating a first file with a layer of graphics corresponding to a physical button on a programmable remote control, said layer of graphics containing information indicating one or more functions of the corresponding physical button in connection with a first service or menu state on an on screen display, said at least one file being accessible by said graphical programming environment; using said graphical programming environment to cause said one or more functions to be performed by a programmable multimedia controller when the user presses said physical button; creating a second file with a layer of graphics corresponding to said physical button on said programmable remote control, said layer of graphics of said second file containing information indicating one or more different functions of the corresponding physical button in connection with a second service or menu state on said on screen display; using said graphical programming environment to cause said one or more different functions to be performed by said programmable multimedia controller when said user presses said physical button; using software to parse said first file or said second file to extract the layers of graphics that indicate said function or said different function; and passing commands to a control application programming interface 'API' to cause said function or said different function to be performed.