W3C home > Mailing lists > Public > www-dom@w3.org > July to September 2012

[DOM3Events] Additional key values for media remote control

From: Yosuke Funahashi <yfuna@tomo-digi.co.jp>
Date: Fri, 28 Sep 2012 00:52:47 +0900
To: www-dom@w3.org
Message-Id: <5A53033A-8A21-40DB-B7F2-AE5C396B6B0B@tomo-digi.co.jp>
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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 27 September 2012 15:55:38 GMT