A method for controlling the functionality of control elements of a control device, comprising: determining an orientation of a control device with respect to a magnetic reference point with a magnetometer; defining the boundaries of first and second zones with respect to a magnetic reference point, the first and second zones being orientated relative to a controlled device associated with the control device; configuring a first functionality of a first set of control elements of the control device and a first functionality of a second set of control elements of the control device, wherein the first functionality of the first set of control elements is associated with the control device being oriented in the first zone defined with respect to the magnetic reference point; and changing the functionality of the first set of control elements to a second functionality when the control device is oriented in the second zone defined with respect to the magnetic reference point, wherein the first functionality of the first set of control elements comprises enabling the first set of control elements, and the second functionality of the first set of control elements comprises disabling the first set of control elements, characterised by learning the orientation of the first and second zones relative to the magnetic reference point by directing the user with the control device or controlled device to orient the control device in certain positions relative to the controlled device and determining the orientation of the control device with respect to the magnetic reference point with the magnetometer as the user orientates the control device in certain positions relative to the controlled device; and by receiving an input when the control device is oriented in the second zone, wherein the input is unexpected based on the control device being oriented in the second zone and the input being from the first set of control elements; and if a predetermined number of unexpected inputs have been received, modifying a boundary between the first and second zones based on the unexpected input and sending the unexpected input to the controlled device. determining an orientation of a control device with respect to a magnetic reference point with a magnetometer; defining the boundaries of first and second zones with respect to a magnetic reference point, the first and second zones being orientated relative to a controlled device associated with the control device; configuring a first functionality of a first set of control elements of the control device and a first functionality of a second set of control elements of the control device, wherein the first functionality of the first set of control elements is associated with the control device being oriented in the first zone defined with respect to the magnetic reference point; and changing the functionality of the first set of control elements to a second functionality when the control device is oriented in the second zone defined with respect to the magnetic reference point, wherein the first functionality of the first set of control elements comprises enabling the first set of control elements, and the second functionality of the first set of control elements comprises disabling the first set of control elements, characterised by learning the orientation of the first and second zones relative to the magnetic reference point by directing the user with the control device or controlled device to orient the control device in certain positions relative to the controlled device and determining the orientation of the control device with respect to the magnetic reference point with the magnetometer as the user orientates the control device in certain positions relative to the controlled device; and by receiving an input when the control device is oriented in the second zone, wherein the input is unexpected based on the control device being oriented in the second zone and the input being from the first set of control elements; and if a predetermined number of unexpected inputs have been received, modifying a boundary between the first and second zones based on the unexpected input and sending the unexpected input to the controlled device.