<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=ks_c_5601-1987"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"¸¼Àº °íµñ";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
@font-face
        {font-family:"\@¸¼Àº °íµñ";
        panose-1:2 11 5 3 2 0 0 2 0 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-autospace:none;
        word-break:break-hangul;
        font-size:10.0pt;
        font-family:"¸¼Àº °íµñ";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"¸¼Àº °íµñ";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:3.0cm 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=KO link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Dear all,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Let me share a patch for extending wayland protocol for helping a wayland client to identify which events are coming from which physical keyboard/pointer device.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>I¡¯d like to discuss with you guys about this patch. : )<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>In this patch, I added ¡°name¡± event both for wl_pointer and for wl_keyboard.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Under wayland protocol applied this patch, a wayland compositor will send the name event when a wayland client add a listener for wl_pointer or wl_keyboard.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Then, the client can store the name of the keyboard or pointer and will use it when it is required.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Usually in desktop environment, we don¡¯t need to care the source device name of events.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>In vehicle, mobile and TV environment, there will be many input devices and will be many special requirements for them.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>For instance, in TV, ¡®1¡¯ key in an usual keyboard will be used as a character ¡®1¡¯ and will be sent to the focus surface/window.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>By the way ¡®1¡¯ key in remote control for TV will be used as a action key and will be sent to channel managing process which doesn¡¯t have any focus surface/window.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>In addition to this example, there can be many examples.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Thus, I share this patch. Any ideas on this ? : )<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks and regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Sung-Jin Park<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>==================================================================<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>From ceeb8e2a10dce59a3fda9aca113b64ea97a85746 Mon Sep 17 00:00:00 2001<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>From: Sung-Jin Park <sj76.park@samsung.com><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Date: Fri, 25 Sep 2015 14:01:57 +0900<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Subject: [PATCH] Add name event for wl_pointer and wl_keyboard in wayland<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US> protocol<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>---<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US> protocol/wayland.xml | 38 ++++++++++++++++++++++++++++++++++++--<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US> 1 file changed, 36 insertions(+), 2 deletions(-)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>diff --git a/protocol/wayland.xml b/protocol/wayland.xml<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>index 42c9309..7e98720 100644<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>--- a/protocol/wayland.xml<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+++ b/protocol/wayland.xml<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@@ -1402,7 +1402,7 @@<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>   </interface><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>-  <interface name="wl_pointer" version="3"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  <interface name="wl_pointer" version="4"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     <description summary="pointer input device"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       The wl_pointer interface represents one or more input devices,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       such as mice, which control the pointer location and pointer_focus<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@@ -1569,9 +1569,26 @@<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       </description><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     </request><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>+    <!-- Version 4 additions --><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    <event name="name"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      <description summary="unique identifier for each pointer"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        This can be used by the client to help identify which pointer events<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        come from which physical pointer device.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        In some cases, a specific client application can acts in different ways<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        when it gets pointer events from different pointer devices.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        For instance, a series of motion events coming from a mouse<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        will be used as a cursor mover while the other series of motion events coming<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        from a pointer device which has a special wheel will be used as a scroller<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        of list of items.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      </description><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      <arg name="name" type="string"/><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    </event><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   </interface><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>-  <interface name="wl_keyboard" version="4"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  <interface name="wl_keyboard" version="5"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     <description summary="keyboard input device"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       The wl_keyboard interface represents one or more keyboards<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       associated with a seat.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@@ -1683,6 +1700,23 @@<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       <arg name="delay" type="int"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            summary="delay in milliseconds since key down until repeating starts"/><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>     </event><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    <!-- Version 5 additions --><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    <event name="name"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      <description summary="unique identifier for each keyboard"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        This can be used by the client to help identify which key events<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        come from which physical keyboard device.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        In some cases, a specific client application can acts in different ways<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        when it gets an identical key from different keyboard devices.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        For instance, in TV like environment, '1' key coming from a keyboard<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        will be used as a character. Meanwhile '1' key coming from a remote<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+        control key device will be used as a channel switching key.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      </description><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+      <arg name="name" type="string"/><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    </event><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   </interface><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>   <interface name="wl_touch" version="3"><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>--<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>1.9.1<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>