[DOM3Events] Additional key values for media remote control

Hi all,

I've reviewed DOM3 Events WD with some broadcasters and CE manufactures from the practical viewpoint of using the spec to implement TV set with a web browser. We found that the spec looks good for that purpose basically, but it can be better if we modify it a little bit about key events. Let me explain.


1. Additional key values for media remote control

* Motivation

Almost all TV remotes have ten-key-like buttons. (Please see images on http://en.wikipedia.org/wiki/Remote_control . You can check remotes in other countries by changing language.)  Nonetheless, the WD contains no key values for them. Therefore, web application developers can't use the buttons as a UI for their web apps on TV set. [1]

Probably, one of the reason why the spec lacks the key values for the buttons is that the semantics (default actions) of the buttons are device-dependent, region-dependent and even context-sensitive. However, from the viewpoint of web app developers, the use case of ten-key-like buttons is simple: "Using them as a ten key or numeric pad to help users input numbers such as zip code, phone numbers, and card numbers".

* Proposal

I would like to propose adding following key values into the key values list in the spec. [2]

{| class="wikitable"
!Key !! Char !! Typical Usage (Informative) !! Category
|-
|'TenKeyLikeButton0' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 0|| Media
|-
|'TenKeyLikeButton1' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 1|| Media
|-
|'TenKeyLikeButton2' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 2|| Media
|-
|'TenKeyLikeButton3' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 3|| Media
|-
|'TenKeyLikeButton4' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 4|| Media
|-
|'TenKeyLikeButton5' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 5|| Media
|-
|'TenKeyLikeButton6' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 6|| Media
|-
|'TenKeyLikeButton7' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 7|| Media
|-
|'TenKeyLikeButton8' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 8|| Media
|-
|'TenKeyLikeButton9' || || Typical default action is to select a channel set to this button by user or default, and typical usage on an application is to input number 9|| Media
|}


Here's a straw example code using one of the key events.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
<!DOCTYPE html>
<html>
<head>
<script>
function init() {
var elm = document.getElementById('zip_code');
elm.addEventListener('keydown', function(e) {
if (e.value == 'TenKeyLikeButton1') {
 e.preventDefault();
 elm.value += '1';
 e.stopImmediatePropagation();
}
});
}
</script>
</head>
<body onload="init();">
<input id="zip_code" type="text"/>
</body>
</html>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 


2. Toggling propagation of media-remote-control's key events

This topic may be out of scope of DOM3 Events spec (maybe relevant to DAP) but I would like to explain this here a little bit because it relates to the propagation of key events over DOM trees.

Basically, dealing with media-remote-control's key events using DOM3 Events on TV set means that the key events propagate over DOM trees *first*, and dispatched to a middleware or hardware *later* to take default actions if preventDefault() has not been called during propagation. This is a bit problematic because the activation of original functions (default actions) preset to the buttons as a remote for a media device has always been bound to a web browser. In other words, the reliability of media devices' original functions always depends on that of a web browser implemented on or beside them. That sounds not so good from architectural and QA viewpoint of CE devices.

To solve the problem, I would like to propose an interface for enabling and disabling propagation of specific key events.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
typedef DOMString KeyValue; // A key value listed or defined in DOM3 Events spec. or an implementation-specific key value.

typedef Sequence<KeyValue> KeyValues;

[NoInterfaceObject]
interface NavigatorMediaRemoteControlUtils {
readonly attribute KeyValues KeyEventsEnabledToFire;
void setKeyEventsEnalbledToFire(KeyValues kvs);
}

Navigator implements NavigatorMediaRemoteControlUtils;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

We are now creating more detailed proposal document on this issue and we will share it on the ML soon. Of course, any comments before that welcome. :)


[1] Actually, existing regional standards for DTV/IPTV with HTML4/XHTML2.1 as their basis have some mechanism to allow app developers to use ten-key-like buttons on remotes. For example,
* used-key-list interface in ARIB specs, http://www.arib.or.jp/english/html/overview/doc/6-STD-B24v5_2-2p3-1-E1.pdf
* KeySet interface in OIPF specs, http://www.oipf.tv/specifications/root/solution-specification-volume-5-declarative-application-environment/download
The sytanxes are different but semantics is almost identical. This is another motivation to define the interface within global standards such as DOM3 Events.

[2] http://www.w3.org/TR/2012/WD-DOM-Level-3-Events-20120906/#key-values-list


Thanks,

Yosuke


--
Yosuke Funahashi
co-Chair, W3C Web and TV Interest Group
Chair, W3C Web and Broadcasting Business Group
Researcher, Keio University Research Institute at SFC
Board Director, Tomo-Digi Corporation

Received on Thursday, 27 September 2012 15:55:34 UTC