jointSPACE API Reference Manual

jointSPACE API Reference Manual
1
SPACE
2
Software Document
3
4
5
6
7
jointSPACE API Reference
Manual
8
9
10
Version 2.2
11
February 8, 2011
12
13
Status: Proposal
14
15
Document reference: AGT034-2010-197
16
© Philips Consumer Lifestyle 2011.
This information is furnished for guidance, and with no guarantee as to its accuracy or completeness; its publication
conveys no license under any patent or other right, nor does the publisher assume liability for any consequence of
its use. Specification and availability of goods mentioned in it are subject to change without notice. This document
is not to be reproduced, in whole or in part, without the written consent of the publisher.
1
17
18
Table of Contents
Abstract .............................................................................................................................................................. 2
19
Device initialisation ............................................................................................................................................. 2
20
Device discovery ................................................................................................................................................ 2
21
Device selection ................................................................................................................................................. 4
22
TV Diversity........................................................................................................................................................ 4
23
API description ................................................................................................................................................... 4
24
Discovery........................................................................................................................................................ 4
25
Functions from directfb.h (#include “directfb.h”)........................................................................ 4
26
Functions from ivoodooplayer.h (#include <voodoo/ivoodooplayer.h>) .................................... 5
27
Key injection ................................................................................................................................................... 5
28
Functions from jslibrc_client.h (#include <jslibrc_client.h>)............................................... 5
29
Graphical content push ................................................................................................................................... 6
30
Remote Control command mapping according to TV diversity............................................................................. 8
31
Key mapping table ........................................................................................................................................ 11
32
Multitap entry tables ......................................................................................................................................... 12
33
Multitap tables for 2k9 ................................................................................................................................... 13
34
Multitap tables for 2k10/2k11......................................................................................................................... 18
35
Revision History ............................................................................................................................................... 24
36
37
Abstract
38
39
40
41
The scope of this document is to explain the jointSPACE API. This API includes device discovery, key injection and
graphical content push.
42
43
More information on how to enable jointSPACE and which TV ranges are supporting it can be found on the
jointSPACE web site.
44
Device initialisation
45
To be able to communicate with other jointSPACE devices, DirectFB needs to be initialised.
46
Therefore, the following call should be the first call made by the application:
47
Because jointSPACE is based on DirectFB technology, part of the API described below is related to DirectFB.

Call once the function DirectFBInit()
48
Device discovery
49
50
To be able to discover and identify jointSPACE devices on the network, the application should make use of the
IVoodooPlayer interface to check for device topology changes.
51
52
53
54
55
56
57
58
59
60


Create once the player, using the function voodoo_player_create()
Once the player is created, the application should check at regular times (e.g. every 2 seconds) if new TV’s
have been added to the network or existing TV’s have been removed from the network. This can be done
using the functions voodoo_player_broadcast() and voodoo_player_enumerate().
Example code for device discovery:
-
In the main routine, call DirectFBInit() and create a thread:
/* DirectFB init */
DFBCHECK( DirectFBInit( (void*)&argc, (void*)&argv ) );
2
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
pthread_mutex_init(&wait_mutex, NULL);
pthread_create( &threadId, NULL, &DiscoveryTask, NULL );
Remark:
DFBCHECK() is a macro that allows you to check the return value of every DFB call.
The parameter DiscoveryTask is the thread function that will be called, once the task is created.
-
In the thread function DiscoveryTask(), create a player and start a while loop that scans every 2
seconds for a change in the topology of the network:
static void* DiscoveryTask( void* param )
{
.
.
.
direct_snputs( info.name, "myplayer", VOODOO_PLAYER_NAME_LENGTH );
DFBCHECK( voodoo_player_create( &info, &player ) );
while ( true )
{
.
.
.
DFBCHECK(voodoo_player_broadcast( player ));
usleep( 100000 );
DFBCHECK(voodoo_player_enumerate( player, player_callback, NULL ));
.
.
wait_2_seconds();
}
return( NULL );
}
In the above code, info is of type VoodooPlayInfo (see play.h). A name is passed to the player at
creation time and then a while loop is started that will:


broadcast the player itself to other devices of the network: the application also announces itself on
the network using the function voodoo_player_broadcast()
enumerate the other devices discovered on the network: a call-back function, player_callback,
is passed as one of the parameters to the function voodoo_player_enumerate().
The call-back function player_callback() is called in a synchronous way for each and every device
found on the network
-
The call-back function receives the following important information from the player(s):
o
o
-
player information (through parameter info of type VoodooPlayInfo), that contains the following
sub-information:
 UUID of the set (16 bytes, 32 HEX characters): serial number of the TV.
This parameter identifies uniquely a device on the network.
 Name of the player (e.g.: “PhilipsTV” for Philips TV’s)
 Model of the player (e.g.: “2k9” or “2k10”, depending of the type of set used). The model
name will be extended with the complete set type information in the future.
 Pls. refer to the section TV diversity for the exact naming of the parameters.
address information, which is the IP address of the set, represented as a string according the
following template: “xxx.xxx.xxx.xxx”
The application should keep administration of the incoming data and maintain the list of sets that are added
or removed from the network.
Maintaining a list of active players is the responsibility of the application (e.g. devices not discovered after x
retries should be removed from the list, linking IP address with UUID...).
3
126
127
128
129
130
131
132
133
134
135
136
137
To accomplish this, the user can create an array of structures of the following type:
typedef struct PlayerProperties
{
unsigned char player_uuid[ 16 ];
char
player_name[ VOODOO_PLAYER_NAME_LENGTH ];
char
player_model[ VOODOO_PLAYER_MODEL_LENGTH ];
char
player_address[ 16 ];
};
The values for VOODOO_... can be found in play.h.
Device selection
If an application wants to switch the control from device A to device B, the function DirectFBSetOption()
must be called.
138
139
140
Example code for key injection:
141
142
143
144
145
146
147
148
149
150
151
152
To switch the key injection from one TV to another one, the following sequence should be used:
jslibrc_Exit();
DirectFBSetOption( “remote”, <IP_address> );
jslibrc_Init( NULL, NULL );
The IP address can be found in the data that has been collected in the call-back function (the IP address is
directly related to the UUID of the device in the above mentioned PlayerProperties structure).
When calling DirectFBSetOption(), the application must first take care that the previous connection is
closed. Then a new connection should be started.
Example code to destroy/create a Remote Control connection:
153
154
jslibrc_Exit(); //Close a Remote Control connection
jslibrc_Init(); //Restart a new Remote Control connection
155
156
Once jslibrc_Init() is called, the system will connect to the new IP address that was set with the
function DirectFBSetOption().
157
TV Diversity
2k9
2k10
2k11
player_name
“PhilipsTV”
“PhilipsTV”
“PhilipsTV”
player_model
“2k9”
“2k10”
“2k11”
158
159
160

161
API description
162
Discovery
163
Functions from directfb.h (#include “directfb.h”)
164
Library to link in is libdirectfb.so.
165
166
167
DFBResult DirectFBInit( int *argc
/* pointer to main()'s argc */
, char *(*argv[]) /* pointer to main()'s argv */
);
168
169
If the detected “player_name” and the detected “player_model” are both “unknown”, then “2k9” is
assumed.


argc: pointer to main()’s argc
argv: pointer to main()’s argv
4
170
This function must be called first. It initialises the DFB stack.
171
172
173
174
175
DFBResult DirectFBSetOption( const char *name, const char *value )


name : must be “remote”
value: the corresponding IP address for the targeted set, according the template
“xxx.xxx.xxx.xxx”
176
This function allows the application to change “runtime” DirectFB arguments.
177
Example: change from one remote device to another.
178
Functions from ivoodooplayer.h (#include <voodoo/ivoodooplayer.h>)
179
Library to link in is libdirectfb.so.
180
DirectResult VoodooPlayerCreate( IVoodooPlayer **ret_interface )
181
182
183

ret_interface: interface returned by the call.
The interface returned by the function VoodooPlayerCreate allows you to access all functions of a
player, as defined in the corresponding header file ivoodooplayer.h.
184
Key injection
185
Functions from jslibrc_client.h (#include <jslibrc_client.h>)
186
Library to link in is libjslibclient.so.
187
int jslibrc_Init( int *argc, char **argv[] )
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214


argc: pointer to main()’s argc
argv: pointer to main()’s argv
This function should be called with parameters ( NULL, NULL ).
This function will set up a Remote Control connection to the first device found on the network, unless the
IP address of a device was previously defined using DirectFBSetOption(). In that case, it will connect
to the device with the IP address given in the call to DirectFBSetOption().
void jslibrc_Exit( void )
This function should be called:



to close a Remote Control connection
when exiting the application
before a new TV is to be selected from the TV network.
void jslibrc_KeyDown( int src, int sys, int cmd )



src: can be keySourceRc5 (RC5 mode) or keySourceRc6 (RC6 mode)
sys: should always be 0 for TV mode or 3 for External sources (see RC command mapping table)
cmd: the possible RC commands are defined in the file jslibrc_types.h.
Note:
Not all commands can be used. See RC command mapping table for more details.
This function can be used to inject keys to a remote device. It should be called at every key press, if
relevant.
void jslibrc_KeyUp( int src, int sys, int cmd )



src: can be keySourceRc5 (RC5 mode) or keySourceRc6 (RC6 mode)
sys: should always be 0 for TV mode or 3 for External sources (see RC command mapping table)
cmd: the possible RC commands are defined in the file jslibrc_types.h.
Note:
Not all commands can be used. See RC command mapping table for more details.
This function can be used to inject keys to a remote device. It should be called at every key release, if
relevant.
5
215
216
217
218
219
int
220
Graphical content push
221
If an application wants to create graphics on the TV, the DirectFB graphical interface has to be used.
222
This is done in a few steps:
223
224
225
226
227
228
229
230
231
232
233
jslibrc_RequestActivity( amLib_EnumActivityId act
, amLib_EnumActivation mode
, int cookie
)
This function is obsolete. It should not be used.
 Create a DirectFB handle (DirectFBCreate())
o This initiates a graphical connection to the TV
 Obtain the graphical layer handle (GetDisplayLayer())
 Create a graphical window (CreateWindow()) and add it to the window layout (SetOpacity() and
RequestFocus())
Note: the maximum resolution of windows is 1280x720x16bits!
 Obtain the graphical surface (GetSurface())
 Draw in the graphical surface (Clear(), Write())
 Commit the changes on screen (Flip())
 Release the DirectFB handle when the picture has to be removed (Release())
o This ends the graphical connection to the TV
234
Example code:
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
#include <directfb.h>
#define DFBCHECK(x...)
do {
DFBResult err;
err = x;
if (err != DFB_OK) {
printf ("Fail!! err!=DFB_OK");
DirectFBError (#x, err);
}
} while(0);
// To show content on TV
static IDirectFB
static IDirectFBDisplayLayer
static DFBWindowDescription
static IDirectFBWindow
static IDirectFBSurface
static unsigned short
static DFBRectangle
\
\
\
\
\
\
\
\
*dfb;
*layer;
wdesc;
*gwindow;
*gsurface;
PixelBuffer[ 1280 * 720 ];
rect;
/* DirectFB init */
DFBCHECK(DirectFBInit( (void*)&argc, (void*)&argv ));
.
.
.
DFBCHECK(DirectFBCreate( &dfb ));
/* Obtain the layer */
DFBCHECK(dfb->GetDisplayLayer(dfb, DLID_PRIMARY, &layer));
/* Setup the Graphical window */
wdesc.flags = ( DWDESC_WIDTH
| DWDESC_HEIGHT
| DWDESC_OPTIONS
| DWDESC_PIXELFORMAT
| DWDESC_STACKING
);
wdesc.width
= 1280;
wdesc.height
= 720;
wdesc.pixelformat = DSPF_RGB16; // DSPF_ARGB4444 or DSPF_ARGB
wdesc.stacking
= DWSC_MIDDLE;
wdesc.options
= DWOP_NONE;
6
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
DFBCHECK(layer->CreateWindow(layer, &wdesc, &gwindow));
DFBCHECK(gwindow->GetSurface(gwindow, &gsurface));
DFBCHECK(gsurface->Clear(gsurface, 0x00,0x00,0x00, 0x00)); //R,G,B,A
DFBCHECK(gwindow->SetOpacity(gwindow, 0xff ));
DFBCHECK(gwindow->RequestFocus( gwindow ));
DFBCHECK(gsurface->Flip( gsurface, NULL, DSFLIP_NONE ));
// write local pixel buffer (e,g, JPEG decoded data)
rect.x = 0;
rect.y = 0;
rect.w = 1280;
rect.h = 720;
DFBCHECK(gsurface->Write( gsurface
, &rect
, (void *)PixelBuffer /* image buffer pointer */
, ( 1280 * 2 )
/* stride */
)
);
DFBCHECK(gsurface->Flip( gsurface, NULL, DSFLIP_NONE ));
// to remove GFX content from TV
if (dfb)
{
DFBCHECK(dfb->Release( dfb ) );
}
300
7
Remote Control command mapping according to TV diversity
Key Events
Standby
Previous channel / P<P / Back
Browse / Guide / Find
Red colour
Green colour
Yellow colour
Blue colour
Home
Volume up / V+
Volume down / VMute
Options / Adjust
Dot
Digit [0..9]
RC codes
(src - sys,cmd)
RC6 - 000,012
RC6 - 000,010
RC6 - 000,204
RC6 - 000,109
RC6 - 000,110
RC6 - 000,111
RC6 - 000,112
RC6 - 000,084
RC6 - 000,016
RC6 - 000,017
RC6 - 000,013
RC6 - 000,064
RC6 - 000,217
RC6 - 000,
000 … 009
Info / i+
Cursor up
Cursor down
Cursor left
Cursor right
Confirm / OK
Next
Previous
Ambilight mode / Experience
RC6 - 000,015
RC6 - 000,088
RC6 - 000,089
RC6 - 000,090
RC6 - 000,091
RC6 - 000,092
RC6 - 000,076
RC6 - 000,077
RC6 - 000,144
Tuner A / Watch TV / Watch Last Preset / Exit
Viewmode / Picture format
RC6 - 000,159
RC6 - 000,245
RC #define’s for cmd
rc6S0Standby
rc6S0PreviousProgram
rc6S0EpgGuide
rc6S0Red
rc6S0Green
rc6S0Yellow
rc6S0Cyan
rc6S0MenuOn
rc6S0VolumeUp
rc6S0VolumeDown
rc6S0MuteDemute
rc6S0ContextualOptions
rc6S0Dot
rc6S0Digit0
…
rc6S0Digit9
rc6S0Display
rc6S0StepUp
rc6S0StepDown
rc6S0StepLeft
rc6S0StepRight
rc6S0Acknowledge
rc6S0AmbLightMode
2k9
2k10
2k11
"Back"
"Guide"
"Back"
"Browse"
"Back"
"Find"
"Options"
"Options"
"Options"
"Ambilight
Mode"
"Watch TV"
"Experience"
"Adjust"
"Watch TV"
"Watch TV"
rc6S0MovieExpand
8
Teletext
Subtitle
ChannelStepUp / P+
ChannelStepDown / PNext source / Source
Ambilight on/off
Play/Pause
Pause
Fast forward / ffw
Stop
Rewind / rew
Record
Online / Net TV
Side/Front
Ext1
Ext2
Ext3
Ext4
Ext5
Ext6
Ext7
Ext8
USB mode (USB content browser)
Mediaserver select (DLNA content browser)
RC6 - 000,060
RC6 - 000,075
RC6 - 000,032
RC6 - 000,033
RC6 - 000,056
RC6 - 000,143
RC6 - 000,044
RC6 - 000,048
RC6 - 000,040
RC6 - 000,049
RC6 - 000,043
RC6 - 000,055
RC6 - 000,190
RC5 - 003,005
RC5 - 003,004
RC5 - 000,057
RC5 - 003,056
RC5 - 003,057
RC5 - 003,123
RC5 - 003,006
RC5 - 003,007
RC5 - 003,008
RC5 - 003,019
RC5 - 003,096
rc6S0TxtSubmode
rc6S0TvTextSubtitle
rc6S0Next
rc6S0Previous
rc6S0External1
rc6S0AmbLightOnOffDim
rc6S0Play
"Source"
"Source"
"Source"
rc6S0FastForward
rc6S0Stop
rc6S0ScanReverse
rc6S0Record
rc6S0DisplayBrowser
9
The pictures below illustrate how the RC key mapping is used for 2k9 TV’s. The detailed key mapping per TV
model that is discovered, is described in the section Key mapping table.
The picture on the left is the original remote control; the picture on the right represents the same remote control
with reference numbers, going from 1 to 41.
The Key mapping table indicates which RC command from the file jslibrc_types.h corresponds with a specific
button on the remote control.
10
Key mapping table
Remote Key
(reference number)
RC6 code
(cmd parameter)
1
rc6S0Standby
2
rc6S0Red
3
rc6S0Green
4
rc6S0Yellow
5
rc6S0Cyan
6
rc6S0MenuOn
7
rc6S0EpgGuide
8
rc6S0ContextualOptions
9
rc6S0StepUp
10
rc6S0StepLeft
11
rc6S0Acknowledge
12
rc6S0StepRight
13
rc6S0StepDown
14
rc6S0PreviousProgram
15
rc6S0Display
16
rc6S0ScanReverse
17
rc6S0Play
18
rc6S0FastForward
19
rc6S0Stop
20
rc6S0Record
21
rc6S0VolumeUp
22
rc6S0VolumeDown
23
rc6S0MuteDemute
24
rc6S0MovieExpand
25
rc6S0Next
26
rc6S0Previous
27
rc6S0DisplayBrowser
28
rc6S0TxtSubmode
29
rc6S0Digit1
30
rc6S0Digit2
31
rc6S0Digit3
32
rc6S0Digit4
33
rc6S0Digit5
34
rc6S0Digit6
35
rc6S0Digit7
36
rc6S0Digit8
37
rc6S0Digit9
38
rc6S0TvTextSubtitle
39
rc6S0Digit0
11
40
rc6S0External1
41
rc6S0AmbLightOnOffDim
Multitap entry tables
The tables below describe the multitap key sequence to be sent for each possible character in each possible
language, supported by the TV.
A multitap key sequence is just a successive number of the same digit key presses to reach the wanted character.

In between two keys, a delay of 10ms is required.

At the end of a sequence, there’s no need for an additional delay, but following keys should be sent:
o 2k9:
( keySourceRc6, 0, rc6S0StepUp )
o 2k10/: ( keySourceRc6, 0, rc6S0Acknowledge )
Example: to send the “!” character for the Dutch language, the sequence should be:


2k9:
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
2k10/2k11:
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
o ( keySourceRc6,
0,
0,
0,
0,
0,
rc6S0Digit0
rc6S0Digit0
rc6S0Digit0
rc6S0Digit0
rc6S0StepUp
) – 10ms delay
) – 10ms delay
) – 10ms delay
)
)
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1 ) – 10ms
rc6S0Digit1)
rc6S0Acknowledge )
delay
delay
delay
delay
delay
delay
delay
delay
12
Multitap tables for 2k9
Key
1
2
3
4
5
6
7
8
9
0
Bulgarian (bg)
Brazilian_Portuguese (bpt)
Croatian (hr)
_-1
АБВГабвг2ABCabc
ДЕЖЗдежз3DEFdef
ИЙКЛийкл4GHIghi
МНОПмноп5JKLjkl
РСТУрсту6MNOmno
ФХЦЧфхцч7PQRSpqrs
ШЩЪЫшщъы8TUVtuv
ЬЭЯаьэяѐ9WXYZwxyz
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2
DEFdef3
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2DČdč
DEFdef3Đđ
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7Šš
TUVtuv8
WXYZwxyz9Žž
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
Key
1
2
3
4
5
6
7
8
9
0
Czech (cs)
Danish (da)
Dutch (nl)
_-1
ABCabc2ÁČáč
DEFdef3ĎÉĚďéě
GHIghi4Íí
JKLjkl5
MNOmno6PÓpó
PQRSpqrs7ŘŠřš
TUVtuv8ŤÚŮťúů
WXYZwxyz9ÝŽýž
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2ÅÆåæ
DEFdef3
GHIghi4
JKLjkl5
MNOmno6Øø
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2
DEFdef3
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
13
Key
1
2
3
4
5
6
7
8
9
0
English (en)
Estonian (et)
Finnish (fi)
_-1
ABCabc2
DEFdef3
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
AÄBCaäbc2
DEFdef3
GHIghi4
JKLjkl5
MNOÕÖmnoõö6
PQRSŠpqrsš7
TUÜVtuüv8
WXYZŽwxyzž9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2ÄÅäå
DEFdef3
GHIghi4
JKLjkl5
MNOmno6Öö
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
Key
1
2
3
4
5
6
7
8
9
0
French (fr)
German (de)
Greek (el)
_-1
ABCabc2ÀÁÇàáç
DEFdef3ÈÉÊèéê
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2Ää
DEFdef3
GHIghi4
JKLjkl5
MNOmno6Öö
PQRSpqrs7ß
TUVtuv8Üü
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ΑΒΓαβγ2ABCabc
ΔΕΖδεζ3DEFdef
ΗΘΙηθι4GHIghi
ΚΛΜκλμ5JKLjkl
ΝΞΟνξο6MNOmno
ΠΡ΢πρςσ7PQRSpqrs
ΣΤΦτυφ8TUVtuv
ΧΨΩχψω9WXYZwxyz
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
14
Key
1
2
3
4
5
6
7
8
9
0
Hungarian (hu)
Italian (it)
Kazakh (kk)
_-1
AÁBCaábc2
DEÉFdeéf3
GHIÍghií4
JKLjkl5
MNOÓÖŐmnoóöő6
PQRSpqrs7
TUÚÜŰVtuúüűv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
AÀBCaàbc2
DEÈFdeèf3
GHIÌghiì4
JKLjkl5
MNOÒmnoò6
PQRSpqrs7
TUÙVtuùv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
АӘБВГаәбвг2ABCabc
ҒДЕЖЗғдежз3DEFdef
ИЙКҚЛийкқл4GHIghi
МНОӚПмноӛп5JKLjkl
РСТУҰрстуұ6MNOmno
ҮФХЦЧүфхцч7PQRSpqrs
ШЩЪЫІшщъыі8TUVtuv
ЬЭЯаьэяѐ9WXYZwxyz
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
Key
1
2
3
4
5
6
7
8
9
0
Latvian (lv)
Lithuania (lt)
Norwegian (no)
_-1
AĀBCČaābcč2
DEĒFdeēf3
GĢHIĪgģhiī4
JKĶLĻjkķlļ5
MNŅOmnņo6
PRSŠprsš7
TUŪVtuūv8
ZŽzž9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
AĄBCaąbc2
DEĘĖFdeęėf3
GHIĮghiį4
JKLjkl5
MNOmno6
PQRSŠpqrsš7
TUŲŪVtuųūv8
WXYZŽwxyzž9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2ÅÆåæ
DEFdef3
GHIghi4
JKLjkl5
MNOmno6Øø
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
15
Key
1
2
3
4
5
6
7
8
9
0
Polish (pl)
Portuguese (pt)
Romanian (ro)
_-1
ABCabc2ĄDąd
DEFdef3Ęę
GHIghi4
JKLjkl5Łł
MNOmno6OÓoó
PQRSpqrs7Śś
TUVtuv8
WXYZwxyz9ŹŻźż
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2ÁÃÇáãç
DEFdef3ÉÊéê
GHIghi4Íí
JKLjkl5
MNOmno6ÓÕóõ
PQRSpqrs7
TUVtuv8Úú
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2Ăă
DEFdef3
GHIghi4Îî
JKLjkl5
MNOmno6
PQRSpqrs7Şş
TUVtuv8Ţţ
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
Key
1
2
3
4
5
6
7
8
9
0
Russian (ru)
Serbian (sr)
Slovak (sk)
_-1
АБВГабвг2ABCabc
ДЕЁЖЗдеёжз3DEFdef
ИЙКЛийкл4GHIghi
МНОПмноп5JKLjkl
РСТУрсту6MNOmno
ФХЦЧфхцч7PQRSpqrs
ШЩЪЫшщъы8TUVtuv
ЬЭЯаьэяѐ9WXYZwxyz
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2DČdč
DEFdef3Đđ
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7Šš
TUVtuv8
WXYZwxyz9Žž
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2ÁÄČáäč
DEFdef3ĎÉďé
GHIghi4Íí
JKLjkl5ĹĽĺľ
MNOmno6PÓÔpóô
PQRSpqrs7Šš
TUVtuv8ŤÚťú
WXYZwxyz9ÝŽýž
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
16
Key
1
2
3
4
5
6
7
8
9
0
Slovenian (sl)
Spanish (es)
Swedish (sv)
_-1
ABCabc2DČdč
DEFdef3
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7Šš
TUVtuv8
WXYZwxyz9Žž
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2Áá
DEFdef3Éé
GHIghi4Íí
JKLjkl5
MNOmno6ÑñÓó
PQRSpqrs7
TUVtuv8ÚÜúü
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCÄÅabcäå2
DEÉFdeéf3
GHIghi4
JKLjkl5
MNOÖmnoö6
PQRSpqrs7
TUÜVtuüv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
Key
1
2
3
4
5
6
7
8
9
0
Turkish (tr)
Ukrainian (uk)
Argentinian Spanish (eas)
_-1
ABCabc2ÂÇâç
DEFdef3
GHIghi4ĞİÎğıî
JKLjkl5
MNOmno6Öö
PQRSpqrs7Şş
TUVtuv8ÜÛüû
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
АБВГабвг2ABCabc
ДЕЮЖдеюж3DEFdef
ЗІЇЙзіїй4GHIghi
КЛМклм5JKLjkl
НОПноп6MNOmno
РСТУрсту7PQRSpqrs
ФХЦфхц8TUVtuv
ШЩЯашщяѐ9WXYZwxyz
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
_-1
ABCabc2
DEFdef3
GHIghi4
JKLjkl5
MNOmno6
PQRSpqrs7
TUVtuv8
WXYZwxyz9
.@0!"#$%&'()*+,/:;<=>?[\]^`{|}~
17
Multitap tables for 2k10/2k11
Key Arabic (ar)
1 .-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
2
2CBAcba ‫ﺙ ﺓ ﺕ ﺏ‬
3
3defDEF ‫ﺀ ا‬
4
4IHGihg ‫ﺽ ﺹ ﺵ ﺱ‬
5
5LKJlkj ‫ﺯ ﺭ ﺫ ﺩ‬
6
6ONMonm ‫ﺥ ﺡ ﺝ‬
7
7SRQPsrqp ‫ﻱ ﻭ ﻩ ﻥ‬
8
8VUTvut ‫ﻡ ﻝ ﻙ ﻕ ﻑ‬
9
9ZYXWzyxw ‫ﻍ ﻉ ﻅ ﻁ‬
0 y 0
Key
1
2
3
4
5
6
7
8
9
0
Bulgarian (bg)
Brazilian_Portuguese (bpt)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
абвгАБВГ2abcABC2
дежзДЕЖЗ3defDEF3
ийклИЙКЛ4ghiGHI4
мнопМНОП5jklJKL5
рстуРСТУ6mnoMNO6
фхцчФХЦЧ7pqrsPQRS7
шщъыШЩЪЫ8tuvTUV8
ьэяѐЬЭЯа9wxyzWXYZ9
y 0
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abc2ABC2
def3DEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
y 0
Croatian (hr)
Czech (cs)
Danish (da)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abcdč2ABCDČ2
dđef3DĐEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrsš7PQRSŠ7
tuv8TUV8
wxyzž9WXYZŽ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aábcč2AÁBCČ2
dďeéěf3DĎEÉĚF3
ghií4GHIÍ4
jkl5JKL5
mnpoó6MNPOÓ6
pqrřsš7PQRŘSŠ7
tťuúův8TŤUÚŮV8
wxyýzž9WXYÝZŽ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aåæbc2AÅÆBC2
def3DEF3
ghi4GHI4
jkl5JKL5
mnoø6MNOØ6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
y 0
y 0
y 0
18
Key
1
2
3
4
5
6
7
8
9
0
Dutch (nl)
English (en)
Estonian (et)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abc2ABC2
def3DEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abc2ABC2
def3DEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aäbc2AÄBC2
def3DEF3
ghi4GHI4
jkl5JKL5
mnoõö6MNOÕÖ6
pqrsš7PQRSŠ7
tuüv8TUÜV8
wxyzž9WXYZŽ9
y 0
y 0
y 0
Key
1
2
3
4
5
6
7
8
9
0
Finnish (fi)
French (fr)
German (de)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aäåbc2AÄÅBC2
def3DEF3
ghi4GHI4
jkl5JKL5
mnoö6MNOÖ6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aàábcç2AÀÁBCÇ2
deèéêf3DEÈÉÊF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aäbc2AÄBC2
def3DEF3
ghi4GHI4
jkl5JKL5
mnoö6MNOÖ6
pqrsß7PQRS7
tuüv8TUÜV8
wxyz9WXYZ9
y 0
y 0
y 0
19
Key
1
2
3
4
5
6
7
8
9
0
Greek (el)
Hungarian (hu)
Italian (it)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
αβγΑΒΓ2abcABC2
δεζΔΕΖ3defDEF3
ηθιΗΘΙ4ghiGHI4
κλμΚΛΜ5jklJKL5
νξοΝΞΟ6mnoMNO6
πρςσΠΡ΢7pqrsPQRS7
τυφΣΤΦ8tuvTUV8
χψωΧΨΩ9wxyzWXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aábc2AÁBC
deéf3DEÉF3
ghií4GHIÍ4
jkl5JKL5
mnoóöő6MNOÓÖŐ6
pqrs7PQRS7
tuúüűv8TUÚÜŰV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aàbc2AÀBC2
deèf3DEÈF3
ghiì4GHIÌ4
jkl5JKL5
mnoò6MNOÒ6
pqrs7PQRS7
tuùv8TUÙV8
wxyz9WXYZ9
y 0
y 0
y 0
Key
1
2
3
4
5
6
7
8
9
0
Kazakh (kk)
Latvian (lv)
Lithuania (lt)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
аәбвгАӘБВГ2abcABC2
ғдежзҒДЕЖЗ3defDEF3
ийкқлИЙКҚЛ4ghiGHI4
мноӛпМНОӚП5jklJKL5
рстуұРСТУҰ6mnoMNO6
үфхцчҮФХЦЧ7pqrsPQRS7
шщъыіШЩЪЫІ8tuvTUV8
ьэяѐЬЭЯа9wxyzWXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aābcč2AĀBCČ2
deēf3DEĒF3
gģhiī4GĢHIĪ4
jkķlļ5JKĶLĻ5
mnņo6MNŅO6
pqrsš7PQRSŠ7
tuūv8TUŪV8
wxyzž9WXYZŽ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aąbc2AĄBC2
deęėf3DEĘĖF3
ghiį4GHIĮ4
jkl5JKL5
mno6MNO6
pqrsš7PQRSŠ7
tuųūv8TUŲŪV8
wxyzž9WXYZŽ9
y 0
y 0
y 0
20
Key
1
2
3
4
5
6
7
8
9
0
Norwegian (no)
Polish (pl)
Portuguese (pt)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aåæbc2AÅÆBC2
def3DEF3
ghi4GHI4
jkl5JKL5
mnoø6MNOØ6
pqrs7PQRS7
tuv8TUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aąbcd2AĄBCD2
deęf3DEĘF3
ghi4GHI4
jklł5JKLŁ5
mnooó6MNOOÓ6
pqrsś7PQRSŚ7
tuv8TUV8
wxyzźż9WXYZŹŻ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aáãbcç2AÁÃBCÇ2
déêef3DÉÊF3
ghií4GHIÍ4
jkl5JKL5
mnoóõ6MNOÓÕ6
pqrs7PQRS7
tuúv8TUÚV8
wxyz9WXYZ9
y 0
y 0
y 0
Key
1
2
3
4
5
6
7
8
9
0
Romanian (ro)
Russian (ru)
Serbian (sr)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aăbc2AĂBC2
def3DEF3
ghiî4GHIÎ4
jkl5JKL5
mno6MNO6
pqrsş7PQRSŞ7
tţuv8TŢUV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
абвгАБВГ2abcABC2
деёжзДЕЁЖЗ3defDEF3
ийклИЙКЛ4ghiGHI4
мнопМНОП5jklJKL5
рстуРСТУ6mnoMNO6
фхцчФХЦЧ7pqrsPQRS7
шщъыШЩЪЫ8tuvTUV8
ьэяѐЬЭЯа9wxyzWXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abcdč2ABCDČ2
dđef3DĐEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrsš7PQRSŠ7
tuv8TUV8
wxyzž9WXYZŽ9
y 0
y 0
y 0
21
Key
1
2
3
4
5
6
7
8
9
0
Slovak (sk)
Slovenian (sl)
Spanish (es)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aáäbcč2AÁÄBCČ2
dďeéf3DĎEÉF3
ghií4GHIÍ4
jklĺľ5JKLĹĽ5
mnpoóô6MNPOÓÔ6
pqrsš7PQRSŠ7
tťuúv8TŤUÚV8
wxyýzž9WXYÝZŽ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
abcdč2ABCDČ2
def3DEF3
ghi4GHI4
jkl5JKL5
mno6MNO6
pqrsš7PQRSŠ7
tuv8TUV8
wxyzž9WXYZŽ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aábc2AÁBC2
deéf3DEÉF3
ghií4GHIÍ4
jkl5JKL5
mnñoó6MNÑOÓ6
pqrs7PQRS7
tuúüv8TUÚÜV8
wxyz9WXYZ9
y 0
0
y 0
y 0
Key
1
2
3
4
5
6
7
8
9
0
Swedish (sv)
Turkish (tr)
Ukrainian (uk)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aäåbc2AÄÅBC2
deéf3DEÉF3
ghi4GHI4
jkl5JKL5
mnoö6MNOÖ6
pqrs7PQRS7
tuüv8TUÜV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aâbcç2AÂBCÇ2
def3DEF3
gğhiıî4GĞHIİÎ4
jkl5JKL5
mnoö6MNOÖ6
pqrsş7PQRSŞ7
tuüûv8TUÜÛV8
wxyz9WXYZ9
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
абвгАБВГ2abcABC2
деюжДЕЮЖ3defDEF3
зіїйЗІЇЙ4ghiGHI4
клмКЛМ5jklJKL5
нопНОП6mnoMNO6
рстуРСТУ7pqrsPQRS7
фхцФХЦ8tuvTUV8
шщяѐШЩЯа9wxyzWXYZ9
y 0
y 0
y 0
22
Key
1
2
3
4
5
6
7
8
9
0
Argentinian Spanish (eas)
.-/@1,'?!"():_;+&%*=<>€£$[]{}\~^`#|1
aábc2AÁBC2
deéf3DEÉF3
ghií4GHIÍ4
jkl5JKL5
mnñoó6MNÑOÓ6
pqrs7PQRS7
tuúüv8TUÚÜV8
wxyz9WXYZ9
y 0
23
Revision History
Version
Date
Comments
1
20101215
Initial version
2
20110202
Adapted for first release
2.1
20110204
Rework after review comments
2.2
20110208
Small adaptation for 2k9 in the Remote Control command table
24
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising