Patent Description:
It is sometimes tedious using a remote-control unit (e.g. IR (Infrared) or BLE (Bluetooth Low Energy)) to manipulate an on-screen keyboard displayed on a display device (e.g. on a TV screen). On standard systems, when the user presses and holds a directional key (e.g. up, down, left or right) of the remote-control unit, the action generally starts about one second after. In other words, a key-repeat feature is triggered after an initial delay of one second. When triggered, the key-repeat feature has a constant key-repeat rate (also referred to as "key-repeat speed") which is very fast. The constant key-repeat rate is defined as the inverse of a time interval between two successive positions of an indicator on the on-screen keyboard. Such a native key-repeat mechanism is mainly designed to quickly reach a border of the on-screen keyboard.

Moreover the initial key-repeat delay and the constant key-repeat rate have predetermined values that may not suit all systems because processing may add time, and it may not suit all users. Someone may find the system too quick to aim at a character, or key-repeat-triggering too sensitive, e.g., a "heavy finger" user may move the indicator (focus) twice instead of once.

<CIT> provides a solution that allows the possibility to design applications with different wait times between cursor movements, where changes between wait times can be made after a given number of movements. While this solution can be seen as an improvement over previous solutions, it can still be unsuitable in certain situations.

Therefore, a need exists to improve the ergonomics of the system including the remote-control unit and the on-screen keyboard, in terms of performance (speed and accuracy), feeling and learning.

The proposed method and apparatus concern indicator movements on an on-screen keyboard depicted on a display device. It will be appreciated that the method and apparatus is not limited to any specific type of system and may also be applied to on-screen grids, such as for example on-screen menus, on-screen lists, etc..

According to a first aspect of the present invention, a method is disclosed for receiving at a display device a series of signals transmitted from a remote-control unit comprising directional keys, wherein the series of signals indicates activation of one of the directional keys. Until detection of reception of a signal indicating release of the activated directional key, repeating moving an indicator on a grid depicted on the display device, the movement associated with the activated directional key, wherein a jump between opposite borders of the grid is enabled, and waiting a given time. The given time has a first value T1 in case the indicator is on a border of the grid, a second value T2 after a first move in case the indicator is not on the border, a third value T3 after a number of moves greater than one and lower than a pre-set value in case the indicator is not on the border, and a fourth value T4 after a number of moves at least equal to the pre-set value and in case the indicator is not on the border, wherein T1>T2>T4>T3.

According to a second aspect of the present invention, a device is provided having a receiver, configured to receive a series of signals transmitted from a remote-control unit comprising directional keys, wherein the series of signals indicates activation of one of the directional keys, and a processor, configured to until detection of reception of a signal indicating release of the activated directional key, repeat: move an indicator on a grid depicted on the display device, the movement associated with the activated directional key, wherein a jump between opposite borders of the grid is enabled, and wait a given time. The given time has a first value T1 in case the indicator is on a border of the grid, a second value T2 after a first move in case the indicator is not on the border, a third value T3 after a number of moves greater than one and lower than a pre-set value in case the indicator is not on the border, and a fourth value T4 after a number of moves at least equal to the pre-set value and in case the indicator is not on the border, wherein T1>T2>T4>T3.

According to a third aspect of the present invention, a system is provided having a remote-control unit comprising directional keys and a device according to the second aspect.

According to a fourth aspect of the present invention, a computer program product for a programmable apparatus is provided, comprising a sequence of instructions for implementing a method according to the first aspect, when loaded into and executed by the programmable apparatus.

At least parts of some processes implemented by elements of the disclosure may be computer implemented. Accordingly, such elements may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as "circuit", "module" or "system". Furthermore, such elements may take the form of a computer program product embodied in any tangible medium of expression having computer usable program code embodied in the medium.

Since elements of the present disclosure can be implemented in software, the present disclosure can be embodied as computer readable code for provision to a programmable apparatus on any suitable carrier medium. A tangible carrier medium may comprise a storage medium such as a floppy disk, a CD-ROM, a hard disk drive, a magnetic tape device or a solid-state memory device and the like. A transient carrier medium may include a signal such as an electrical signal, an optical signal, an acoustic signal, a magnetic signal or an electromagnetic signal, e.g., a microwave or RF signal.

Other features and advantages of embodiments shall appear from the following description, given by way of indicative and non-exhaustive examples and from the appended drawings, of which:.

The disclosure relates to a method (and corresponding device) for controlling the movements of an indicator (also referred to as "focus") or a positional indicator on an on-screen grid based on directional signals transmitted from a remote-control unit (or RCU) comprising directional keys (usually "UP", "RIGHT", "DOWN" and "LEFT" keys of a D-pad (Directional pad)). The positional indicator may be for example, a cursor.

The disclosure can be applied particularly but not exclusively with a particular type of on-screen grid which is an on-screen keyboard (OSK) depicted on a display device (e.g. a TV) and that can be used instead of a physical keyboard. The on-screen keyboard is for example an alphanumeric on-screen keyboard (of any type: AZERTY, QWERTY, etc.). In alternative embodiments, it can be applied with any type of on-screen keyboard (broadly defined as a layout comprising keys, also referred to a as buttons, arranged essentially in rows and/or columns): lists, menus, etc..

The disclosure can also be applied with other types of on-screen grids, such as for example on-screen menus, on-screen lists, etc..

In all of the figures of the disclosure, similar elements and steps are designated by the same numerical reference sign.

Referring now to <FIG>, there is shown an exemplary embodiment of an on-screen grid which is an on-screen keyboard control device (OSK control device) <NUM> internal to a TV <NUM>. In a variant of <FIG>, shown in <FIG>, the OSK control device <NUM> is external to the TV <NUM>.

As already mentioned above, the disclosure applies also with any other type of on-screen grid (such as, for example, an on-screen menu, an on-screen list, etc.) including either at least one row and several columns or several rows and at least one column.

The system may also include a remote-control unit (RCU) <NUM> having directional keys (in this embodiment, UP key <NUM> , RIGHT key <NUM>, DOWN key <NUM> and LEFT key <NUM> of a D-pad) and an OK key <NUM>. Based on activation of one or more of the directional keys <NUM>-<NUM>, the remote-control unit <NUM> transmits directional signals <NUM> to the OSK control device <NUM>. Alternatively, a keyboard device (not shown) with directional keys may be used to control the movement of the indicator on the on-screen grid.

An exemplary on-screen keyboard <NUM> is depicted on screen <NUM> of the TV <NUM>. In the illustrated embodiment, the on-screen keyboard <NUM> is of the QWERTY type.

In the illustrated embodiment, the OSK control device <NUM> comprises a receiver <NUM> configured to receive the signals transmitted by the remote-control unit <NUM>, in particular signals <NUM>.

The OSK control device <NUM> also includes a non-volatile memory <NUM> (e.g., a read-only memory (ROM) or a hard disk), a volatile memory <NUM> (e.g. a random-access memory or RAM) and a processor (reprogrammable computation machine) <NUM>. The non-volatile memory <NUM> is a non-transitory computer-readable carrier medium. It stores executable program code instructions <NUM>, which are executed by the processor <NUM> in order to enable implementation of the method described below (discussed with reference to <FIG> and <FIG>). Upon initialization, the program code instructions <NUM> are transferred from the non-volatile memory <NUM> to the volatile memory <NUM> so as to be executed by the processor <NUM>. The volatile memory <NUM> likewise includes registers for storing the variables and parameters required for this execution.

All the steps of the method described below (discussed with reference to <FIG> and <FIG>) can be implemented by the OSK control device <NUM>, by the execution of a set of program code instructions executed by a reprogrammable computing machine such as the processor <NUM> or a microcontroller, or by a dedicated computing machine or component, such as a FPGA (Field Programmable Gate Array), an ASIC (Application-Specific Integrated Circuit) or any dedicated hardware component.

In other words, the disclosure is not limited to the purely software-based implementation of <FIG>, in the form of computer program instructions, but that it can also be implemented in hardware form or any form combining a hardware portion and a software portion.

The OSK control device <NUM> (and more precisely the processor <NUM> when executing the program code instructions <NUM>) is configured for:.

The reaction time for moving the indicator has a key-repeat rate defined as the inverse of a delay between two successive positions of the indicator on the on-screen keyboard <NUM>. For example, with a delay of <NUM> between two successive positions of the indicator, the key-repeat rate is: R = <NUM>/(<NUM>) = <NUM> repeats per second.

According to one embodiment, the reaction time for moving the indicator is variable and takes at least two different values based at least on a number of jumps between successive positions of the indicator after triggering an initial key-repeat feature.

In a particular embodiment, the reaction time may have a first value if the number of jump is lower than a first number of indicator moves, and a second value, lower than the first value, if the number of jumps is greater than or equal to the first number of indicator moves.

In a particular embodiment, the second value of the reaction time is greater than the inverse of the initial key-repeat delay.

In a particular embodiment, the reaction time may have a third value, lower than the second value, if the indicator has reached a current position that is an edge of the on-screen keyboard and if a jump function between opposite edges of the on-screen keyboard is implemented.

Other characteristics of the key-repeat feature according to the disclosure are presented below, with a detailed description of first and second algorithms carried out by the OSK control device <NUM>.

<FIG> illustrates a second exemplary embodiment in which the on-screen grid is an OSK control device <NUM> (e.g. as defined above in relation to <FIG>) in an ancillary device <NUM> which is external to the TV <NUM>. The ancillary device <NUM> may be for example a set-top-box, a BlueRay player, a game console, etc. In a variant of <FIG>, the OSK control device <NUM> may also be external to the ancillary device <NUM>.

<FIG> is a flowchart of a first algorithm (also referred to as "smart key-repeat algorithm") carried out by the OSK control device <NUM> of <FIG> or <FIG>.

In order to implement the first algorithm according to the present invention, we introduce four key-repeat time-intervals, e.g., reaction times for moving the indicator (in a variant not covered by the claims, the last one is not used):.

Each of the last three key-repeat time-intervals (KEY_REPEAT_DELAY_GO, KEY_REPEAT_DELAY_CRUISE and KEY_REPEAT_DELAY_BORDER) can be seen as a delay (time interval) between two successive positions of the indicator <NUM> on the OSK <NUM>. Therefore, the inverse of each of these last three key-repeat time-intervals is a different possible value of the variable key-repeat rate (reaction time for moving the indicator).

In one embodiment, the values used for the different parameters defined above are as follows:.

With such values, if the user activates the D-pad RIGHT key <NUM> to go from the "Q" to the "U" on the QWERTY on-screen keyboard <NUM>, it takes:.

Of course, other values can be used for the aforesaid different parameters. The accuracy gets better with longer delays. However, the system feels more reactive with small values, and it's often faster to roughly reach a keyboard zone and fine-tune the focus position, rather than slowing down the system to get absolutely no fine-tuning. So, it's a compromise between speed and pure accuracy. This will be considered in the second algorithm, which is detailed below with respect to <FIG> and enables a customization of such values.

We now detail the different steps of the first algorithm shown in <FIG>.

In step <NUM>, a parameter initialization is performed as follows:.

In step <NUM>, the OSK control device receives a signal indicating a press (KeyDown event) on one of the D-pad keys <NUM>-<NUM> of the remote-control unit (RCU).

In step <NUM>, the OSK control device applies a movement associated with the pressed D-pad key, i.e. moves the indicator on the on-screen keyboard, from one position to the next (i.e. a jump between two successive positions) according to the pressed D-pad key (e.g. the OSK control device applies a jump of the indicator from the "Q" to the "W" on the on-screen keyboard <NUM>, in case of a press on the D-pad RIGHT key <NUM>).

In step <NUM>, the OSK control device records the indicator movement of step <NUM>, by completing a history variable, named "D-pad_Key_History" (used in the second algorithm of <FIG>), i.e. by adding to this history variable the movement carried out in step <NUM> and associated with the pressed D-pad key. For example, in case of a press on the D-pad RIGHT key <NUM>, the movement "RIGHT" is added to the history variable.

In step <NUM>, the OSK control device increments by one a key-repeat counter (named "Key_Repeat_Counter"), which is used to count the number of indicator jumps between successive keyboard positions.

In step <NUM>, the OSK control device detects if the indicator is on a border (first/last column/row) of the on-screen keyboard <NUM>.

In the case of a negative answer in step <NUM>, the algorithm continues in step <NUM>, in which the OSK control device performs a wait step, whose duration depends on the value of "Key_Repeat_Counter".

In an alternative embodiment of step <NUM>, if Key_Repeat_Counter ≤ KEY_REPEAT_NB_BEFORE_CRUISE, the duration of the wait step (i.e. KEY_REPEAT_DELAY_GO) is variable and takes a different value for each value of Key_Repeat_Counter greater than "<NUM>" and lower or equal to KEY_REPEAT_NB_BEFORE_CRUISE.

For example, with KEY_REPEAT_NB_BEFORE_CRUISE = <NUM>:.

In the case of a positive answer in step <NUM>, the algorithm continues in step <NUM>, in which the OSK control device performs a wait step whose duration is KEY_REPEAT_DELAY_BORDER.

After step <NUM> or <NUM>, the algorithm continues in step <NUM>, in which the OSK control device detects if it has received a directional signal indicating a release (KeyUp event) of the D-pad key which was indicated as pressed in step <NUM>.

In the case of a negative answer in step <NUM>, the algorithm goes back to step <NUM> (the key-repeat feature is still active since the user has not yet released the D-pad key.

In the case of a positive answer in step <NUM>, the algorithm continues in final step <NUM> in which the OSK control device resets "Key_Repeat_Counter" to zero (end of the key-repeat feature).

In the embodiment of <FIG>, the OSK control device performs a wait step (step <NUM> or <NUM>) after each movement of the indicator (step <NUM>).

In an alternative implementation not covered by the claims, step <NUM> is carried out after steps <NUM> and <NUM> and before step <NUM>, and in the case of a negative answer in step <NUM>, the algorithm goes back to step <NUM>. Thus, the OSK control device performs a wait step (step <NUM> or <NUM>) before each movement of the indicator (step <NUM>).

<FIG> is a flowchart of a second algorithm (also referred to as "user customized speed algorithm") carried out by the on-screen keyboard control device of <FIG> or <FIG>.

The aim is to allow the on-screen keyboard control device <NUM> to learn from the user and adapt at least one of the four key-repeat time-intervals discussed above, namely:.

In the following exemplary embodiment, a single algorithm allows the user to increase/decrease three delay times (KEY_REPEAT_DELAY_FIRST, KEY_REPEAT_DELAY_GO and KEY_REPEAT_DELAY_CRUISE) of the same adjust step named KEY_REPEAT_LEARNING_ADJUST_STEP (= <NUM> for instance) at the same time.

To decide when speeding up or down the key-repeat feature, the OSK control device <NUM> monitors antagonist (forward-backward) moves of the indicator <NUM> (also referred to as "position-fix patterns") to detect if speed is too high or too low, and therefore to decide if the key-repeat time-intervals being learned must be increased or decreased.

In a particular embodiment, an antagonist move is defined by a sequence of moves of the indicator executed before receiving an OK validation signal transmitted from the remote-control unit (RCU):.

For instance, with the aforesaid definition:.

As perfect accuracy for indicator moves generally means a slow system. It's not the best solution. The system becomes spineless in term of user experience, but also it alters the performance: it is often quicker to move fast and fine-tune, than getting to the target slowly in one shot. So, the antagonist moves are analyzed according to the usage and duration thereof.

For instance, a number P (e.g., <NUM> ≤ P ≤ <NUM>, and in a particular embodiment: P = <NUM>) of antagonist moves (N, M) detected during a time duration D1 (e.g., <NUM> ≤ D1 ≤ <NUM>, and in a particular embodiment: D1 = one session of duration R seconds, with R = <NUM>) triggers the speed decrease (i.e. an increase of the key-repeat time-intervals being learned). In the same way, if the user makes no antagonist move (N, M) during a time duration D2 (e.g. <NUM> ≤ D2 ≤ <NUM>, and in a particular embodiment: D2 = K sessions of duration R seconds, with K = <NUM> and R = <NUM>), it triggers the speed increase (i.e. a decrease of the key-repeat time-intervals being learned).

The different steps of the second algorithm shown in <FIG> (particular embodiment for speeding up the system) are described below. The aforesaid customizable system parameters R, P and K are named respectively:.

Note: Usage_Monitoring_Start_Date is used as time and initialized when the on-screen keyboard is called/displayed.

In step <NUM>, the OSK control device receives a signal indicating a release (KeyUp event) of the OK key <NUM> of the remote-control unit (RCU) <NUM>.

In step <NUM>, the OSK control device applies (i.e. enters) the character selected (focused) by the indicator <NUM> on the on-screen keyboard <NUM>.

In step <NUM>, the OSK control device checks the content of the history variable named "D-pad_Key_History" which stores the indicator movements (see step <NUM> of <FIG>), in order to detect an error, i.e. an antagonist move (N, M) of the indicator <NUM> as defined above.

If an antagonist move is detected in step <NUM>, the algorithm continues in step <NUM>, in which the OSK control device increments by one the counter named "Nav_Error_Counter", which counts the number of antagonist move.

A step <NUM> is carried out after step <NUM>, or directly after step <NUM> if no antagonist move is detected in this step <NUM>. In step <NUM>, the OSK control device checks if a current monitoring session has ended. This is the case is the following condition is satisfied:
Current Date - Usage_Monitoring_Start_Date > NAV_MONITORING_SESSION_DURATION.

In the case of a negative answer in step <NUM>, the algorithm goes to an end step <NUM> ("do nothing").

In the case of a positive answer in step <NUM>, the algorithm goes to step <NUM> in which the OSK control device checks if "Nav_Error_Counter" is equal to zero.

In the case of a positive answer in step <NUM>, the algorithm goes to step <NUM> in which the OSK control device increments by one the counter named "Consecutive_No_Error_Session_Counter", which counts the number of consecutive session without antagonist move.

Step <NUM> is followed by a step <NUM> in which the OSK control device checks if "Consecutive_No_Error_Session_Counter" is equal to "PERFECT_SESSION_THRESHOLD".

In the case of a positive answer in step <NUM>, the algorithm goes to step <NUM> in which the OSK control device decreases one or more of the three delay times (KEY_REPEAT_DELAY_FIRST, KEY_REPEAT_DELAY_GO and KEY_REPEAT_DELAY_CRUISE) of the adjust step KEY_REPEAT_LEARNING_ADJUST_STEP. Then it goes to step <NUM>, in which "Consecutive_No_Error_Session_Counter" is reset to zero, and then to a final step <NUM> in which the OSK control device resets "Usage_Monitoring_Start_Date" to the current date (thus starting a new monitoring session).

In the case of a negative answer in step <NUM>, the algorithm goes directly to the final step <NUM>.

In the case of a negative answer in step <NUM>, the algorithm goes to step <NUM>, in which the OSK control device resets "Consecutive_No_Error_Session_Counter" to zero, and then to step <NUM> in which the OSK control device checks if "Nav_Error_Counter" is equal to NAV_ERROR_THRESHOLD.

In the case of a positive answer in step <NUM>, the algorithm goes to step <NUM> in which the OSK control device increases three delays (KEY_REPEAT_DELAY_FIRST, KEY_REPEAT_DELAY_GO and KEY_REPEAT_DELAY_CRUISE) of the adjust step KEY_REPEAT_LEARNING_ADJUST_STEP. Then it goes to a step <NUM>, in which "Nav_Error_Counter" is reset to zero, and then to the final step <NUM>.

In the case of a negative answer in step <NUM>, the algorithm goes directly to step <NUM>.

It will thus be appreciated that those skilled in the art will be able to devise various modified arrangements.

Thus, for example, it will be appreciated by those skilled in the art that the diagrams presented herein represent conceptual views of illustrative circuitry embodying the principles of the disclosure. Similarly, it will be appreciated that any flow charts, flow diagrams, state transition diagrams, pseudocode and the like represent various processes which may be substantially represented in computer readable media and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.

The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. Moreover, explicit use of the term "processor" or "controller" should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, read only memory (ROM) for storing software, random access memory (RAM), and nonvolatile storage.

Claim 1:
A method, comprising:
receiving (<NUM>, <NUM>) at a display device (<NUM>) a series of signals (<NUM>) transmitted from a remote-control unit (<NUM>) comprising directional keys, wherein the series of signals indicates activation of one of the directional keys; and
until detection (<NUM>) of reception of a signal indicating release of the activated directional key, repeating:
moving (<NUM>) an indicator (<NUM>) on a grid (<NUM>) depicted on the display device (<NUM>), the movement associated with the activated directional key, wherein a jump between opposite borders of the grid is enabled; and
waiting (<NUM>, <NUM>) a given time;
wherein the given time has:
a first value T1 in case the indicator is on a border of the grid (<NUM>);
a second value T2 after a first move in case the indicator is not on the border;
a third value T3 after a number of moves greater than one and lower than a pre-set value in case the indicator is not on the border; and
a fourth value T4 after a number of moves at least equal to the pre-set value and in case the indicator is not on the border;
wherein T1>T2>T4>T3.