Ticket #37: key_sym_2_0.xsl

File key_sym_2_0.xsl, 20.3 kB (added by patrick, 2 years ago)

Transform for VR Juggler 2.0 configurations to use symbolic identifiers for keyboard keys, mouse buttons, and mouse motions

Line 
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!-- *********** <auto-copyright.pl BEGIN do not edit this line> *********** -->
4 <!--
5  VR Juggler is (C) Copyright 1998-2007 by Iowa State University
6
7  Original Authors:
8    Allen Bierbaum, Christopher Just,
9    Patrick Hartling, Kevin Meinert,
10    Carolina Cruz-Neira, Albert Baker
11
12  This library is free software; you can redistribute it and/or
13  modify it under the terms of the GNU Library General Public
14  License as published by the Free Software Foundation; either
15  version 2 of the License, or (at your option) any later version.
16
17  This library is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20  Library General Public License for more details.
21
22  You should have received a copy of the GNU Library General Public
23  License along with this library; if not, write to the
24  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25  Boston, MA 02111-1307, USA.
26  -->
27 <!-- ************ <auto-copyright.pl END do not edit this line> ************ -->
28
29 <!--
30
31    This stylesheet provides a way to switch references to the numeric value
32    of a keyboard key, mouse button, or mouse motion to the symbolic value.
33    This only works with VR Juggler 2.0 configurations and is intended to aid
34    with the migration to VR Juggler 2.2 and beyond.
35
36       xsltproc -o new-file.jconf key_sym_2_0.xsl old-file.jconf
37
38    or
39
40       xalan -in old-file.jconf -xsl key_sym_2_0.xsl -out new-file.jconf
41
42 -->
43
44 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
45                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
46                 xmlns:jconf="http://www.vrjuggler.org/jccl/xsd/3.0/configuration">
47    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
48
49    <!-- Define a handy way to insert newlines when necessary. -->
50    <xsl:variable name="newline">
51 <xsl:text>
52 </xsl:text>
53    </xsl:variable>
54
55    <!-- The namespace for JCCL configuration files. -->
56    <xsl:variable name="jconf_schema">
57       <xsl:text>http://www.vrjuggler.org/jccl/xsd/3.0/configuration</xsl:text>
58    </xsl:variable>
59
60    <!-- The schema for JCCL configuration files. -->
61    <xsl:variable name="jconf_schema_file">
62       <xsl:text>http://www.vrjuggler.org/jccl/xsd/3.0/configuration.xsd</xsl:text>
63    </xsl:variable>
64
65    <xsl:template match="/">
66      <!-- Add the file format version information. -->
67      <xsl:processing-instruction name="org-vrjuggler-jccl-settings">configuration.version="3.0"</xsl:processing-instruction>
68       <xsl:value-of select="$newline"/>
69
70       <xsl:apply-templates />
71
72       <xsl:message>
73          <xsl:text>Processing is complete.  You should now use VRJConfig</xsl:text>
74          <xsl:value-of select="$newline"/>
75          <xsl:text>to verify the results and make any necessary changes.</xsl:text>
76          <xsl:value-of select="$newline"/>
77       </xsl:message>
78    </xsl:template>
79
80    <xsl:template match="jconf:include">
81       <xsl:copy-of select="." />
82    </xsl:template>
83
84    <xsl:template match="jconf:elements">
85       <xsl:copy>
86          <xsl:apply-templates />
87       </xsl:copy>
88    </xsl:template>
89
90    <xsl:template match="jconf:modifier_key">
91       <xsl:variable name="modifier">
92          <xsl:value-of select="." />
93       </xsl:variable>
94       <xsl:element name="modifier_key">
95          <xsl:call-template name="changeModifier">
96             <xsl:with-param name="modifier" select="$modifier" />
97          </xsl:call-template>
98       </xsl:element>
99    </xsl:template>
100
101    <xsl:template match="jconf:key">
102       <xsl:variable name="key">
103          <xsl:value-of select="." />
104       </xsl:variable>
105       <xsl:element name="key">
106          <xsl:call-template name="changeKey">
107             <xsl:with-param name="key" select="$key" />
108          </xsl:call-template>
109       </xsl:element>
110    </xsl:template>
111
112    <xsl:template match="jconf:lock_key">
113       <xsl:variable name="key">
114          <xsl:value-of select="." />
115       </xsl:variable>
116       <xsl:element name="lock_key">
117          <xsl:call-template name="changeKey">
118             <xsl:with-param name="key" select="$key" />
119          </xsl:call-template>
120       </xsl:element>
121    </xsl:template>
122
123 <!-- EVERYTHING ELSE ====================================================== -->
124    <!--
125       Perform a recursive copy everything that hasn't already been matched.
126       We do this one level at a time.
127    -->
128    <xsl:template match="*">
129       <xsl:copy select=".">
130          <!-- Copy any and all attributes. -->
131          <xsl:copy-of select="./@*" />
132          <!-- Process children. -->
133          <xsl:apply-templates />
134       </xsl:copy>
135    </xsl:template>
136
137    <xsl:template name="changeKey">
138       <xsl:param name="key" />
139
140       <xsl:choose>
141          <xsl:when test="$key = '0'">
142             <xsl:text>KEY_NONE</xsl:text>
143          </xsl:when>
144          <xsl:when test="$key = '1'">
145             <xsl:text>KEY_UP</xsl:text>
146          </xsl:when>
147          <xsl:when test="$key = '2'">
148             <xsl:text>KEY_DOWN</xsl:text>
149          </xsl:when>
150          <xsl:when test="$key = '3'">
151             <xsl:text>KEY_LEFT</xsl:text>
152          </xsl:when>
153          <xsl:when test="$key = '4'">
154             <xsl:text>KEY_RIGHT</xsl:text>
155          </xsl:when>
156          <xsl:when test="$key = '5'">
157             <xsl:text>KEY_CTRL</xsl:text>
158          </xsl:when>
159          <xsl:when test="$key = '6'">
160             <xsl:text>KEY_SHIFT</xsl:text>
161          </xsl:when>
162          <xsl:when test="$key = '7'">
163             <xsl:text>KEY_ALT</xsl:text>
164          </xsl:when>
165          <xsl:when test="$key = '8'">
166             <xsl:text>KEY_1</xsl:text>
167          </xsl:when>
168          <xsl:when test="$key = '9'">
169             <xsl:text>KEY_2</xsl:text>
170          </xsl:when>
171          <xsl:when test="$key = '10'">
172             <xsl:text>KEY_3</xsl:text>
173          </xsl:when>
174          <xsl:when test="$key = '11'">
175             <xsl:text>KEY_4</xsl:text>
176          </xsl:when>
177          <xsl:when test="$key = '12'">
178             <xsl:text>KEY_5</xsl:text>
179          </xsl:when>
180          <xsl:when test="$key = '13'">
181             <xsl:text>KEY_6</xsl:text>
182          </xsl:when>
183          <xsl:when test="$key = '14'">
184             <xsl:text>KEY_7</xsl:text>
185          </xsl:when>
186          <xsl:when test="$key = '15'">
187             <xsl:text>KEY_8</xsl:text>
188          </xsl:when>
189          <xsl:when test="$key = '16'">
190             <xsl:text>KEY_9</xsl:text>
191          </xsl:when>
192          <xsl:when test="$key = '17'">
193             <xsl:text>KEY_0</xsl:text>
194          </xsl:when>
195          <xsl:when test="$key = '18'">
196             <xsl:text>KEY_A</xsl:text>
197          </xsl:when>
198          <xsl:when test="$key = '19'">
199             <xsl:text>KEY_B</xsl:text>
200          </xsl:when>
201          <xsl:when test="$key = '20'">
202             <xsl:text>KEY_C</xsl:text>
203          </xsl:when>
204          <xsl:when test="$key = '21'">
205             <xsl:text>KEY_D</xsl:text>
206          </xsl:when>
207          <xsl:when test="$key = '22'">
208             <xsl:text>KEY_E</xsl:text>
209          </xsl:when>
210          <xsl:when test="$key = '23'">
211             <xsl:text>KEY_F</xsl:text>
212          </xsl:when>
213          <xsl:when test="$key = '24'">
214             <xsl:text>KEY_G</xsl:text>
215          </xsl:when>
216          <xsl:when test="$key = '25'">
217             <xsl:text>KEY_H</xsl:text>
218          </xsl:when>
219          <xsl:when test="$key = '26'">
220             <xsl:text>KEY_I</xsl:text>
221          </xsl:when>
222          <xsl:when test="$key = '27'">
223             <xsl:text>KEY_J</xsl:text>
224          </xsl:when>
225          <xsl:when test="$key = '28'">
226             <xsl:text>KEY_K</xsl:text>
227          </xsl:when>
228          <xsl:when test="$key = '29'">
229             <xsl:text>KEY_L</xsl:text>
230          </xsl:when>
231          <xsl:when test="$key = '30'">
232             <xsl:text>KEY_M</xsl:text>
233          </xsl:when>
234          <xsl:when test="$key = '31'">
235             <xsl:text>KEY_N</xsl:text>
236          </xsl:when>
237          <xsl:when test="$key = '32'">
238             <xsl:text>KEY_O</xsl:text>
239          </xsl:when>
240          <xsl:when test="$key = '33'">
241             <xsl:text>KEY_P</xsl:text>
242          </xsl:when>
243          <xsl:when test="$key = '34'">
244             <xsl:text>KEY_Q</xsl:text>
245          </xsl:when>
246          <xsl:when test="$key = '35'">
247             <xsl:text>KEY_R</xsl:text>
248          </xsl:when>
249          <xsl:when test="$key = '36'">
250             <xsl:text>KEY_S</xsl:text>
251          </xsl:when>
252          <xsl:when test="$key = '37'">
253             <xsl:text>KEY_T</xsl:text>
254          </xsl:when>
255          <xsl:when test="$key = '38'">
256             <xsl:text>KEY_U</xsl:text>
257          </xsl:when>
258          <xsl:when test="$key = '39'">
259             <xsl:text>KEY_V</xsl:text>
260          </xsl:when>
261          <xsl:when test="$key = '40'">
262             <xsl:text>KEY_W</xsl:text>
263          </xsl:when>
264          <xsl:when test="$key = '41'">
265             <xsl:text>KEY_X</xsl:text>
266          </xsl:when>
267          <xsl:when test="$key = '42'">
268             <xsl:text>KEY_Y</xsl:text>
269          </xsl:when>
270          <xsl:when test="$key = '43'">
271             <xsl:text>KEY_Z</xsl:text>
272          </xsl:when>
273          <xsl:when test="$key = '44'">
274             <xsl:text>KEY_ESC</xsl:text>
275          </xsl:when>
276          <xsl:when test="$key = '45'">
277             <xsl:text>MOUSE_POSX</xsl:text>
278          </xsl:when>
279          <xsl:when test="$key = '46'">
280             <xsl:text>MOUSE_NEGX</xsl:text>
281          </xsl:when>
282          <xsl:when test="$key = '47'">
283             <xsl:text>MOUSE_POSY</xsl:text>
284          </xsl:when>
285          <xsl:when test="$key = '48'">
286             <xsl:text>MOUSE_NEGY</xsl:text>
287          </xsl:when>
288          <xsl:when test="$key = '49'">
289             <xsl:text>MOUSE_BUT1</xsl:text>
290          </xsl:when>
291          <xsl:when test="$key = '50'">
292             <xsl:text>MOUSE_BUT2</xsl:text>
293          </xsl:when>
294          <xsl:when test="$key = '51'">
295             <xsl:text>MOUSE_BUT3</xsl:text>
296          </xsl:when>
297          <xsl:when test="$key = '52'">
298             <xsl:text>MOUSE_BUT4</xsl:text>
299          </xsl:when>
300          <xsl:when test="$key = '53'">
301             <xsl:text>MOUSE_BUT5</xsl:text>
302          </xsl:when>
303          <xsl:when test="$key = '54'">
304             <xsl:text>NO_MBUTTON</xsl:text>
305          </xsl:when>
306          <xsl:when test="$key = '55'">
307             <xsl:text>KEY_TAB</xsl:text>
308          </xsl:when>
309          <xsl:when test="$key = '56'">
310             <xsl:text>KEY_BACKTAB</xsl:text>
311          </xsl:when>
312          <xsl:when test="$key = '57'">
313             <xsl:text>KEY_BACKSPACE</xsl:text>
314          </xsl:when>
315          <xsl:when test="$key = '58'">
316             <xsl:text>KEY_RETURN</xsl:text>
317          </xsl:when>
318          <xsl:when test="$key = '59'">
319             <xsl:text>KEY_ENTER</xsl:text>
320          </xsl:when>
321          <xsl:when test="$key = '60'">
322             <xsl:text>KEY_INSERT</xsl:text>
323          </xsl:when>
324          <xsl:when test="$key = '61'">
325             <xsl:text>KEY_DELETE</xsl:text>
326          </xsl:when>
327          <xsl:when test="$key = '62'">
328             <xsl:text>KEY_PAUSE</xsl:text>
329          </xsl:when>
330          <xsl:when test="$key = '63'">
331             <xsl:text>KEY_PRINT</xsl:text>
332          </xsl:when>
333          <xsl:when test="$key = '64'">
334             <xsl:text>KEY_SYSREQ</xsl:text>
335          </xsl:when>
336          <xsl:when test="$key = '65'">
337             <xsl:text>KEY_HOME</xsl:text>
338          </xsl:when>
339          <xsl:when test="$key = '66'">
340             <xsl:text>KEY_END</xsl:text>
341          </xsl:when>
342          <xsl:when test="$key = '67'">
343             <xsl:text>KEY_PRIOR</xsl:text>
344          </xsl:when>
345          <xsl:when test="$key = '68'">
346             <xsl:text>KEY_NEXT</xsl:text>
347          </xsl:when>
348          <xsl:when test="$key = '69'">
349             <xsl:text>KEY_CAPS_LOCK</xsl:text>
350          </xsl:when>
351          <xsl:when test="$key = '70'">
352             <xsl:text>KEY_NUM_LOCK</xsl:text>
353          </xsl:when>
354          <xsl:when test="$key = '71'">
355             <xsl:text>KEY_SCROLL_LOCK</xsl:text>
356          </xsl:when>
357          <xsl:when test="$key = '72'">
358             <xsl:text>KEY_F1</xsl:text>
359          </xsl:when>
360          <xsl:when test="$key = '73'">
361             <xsl:text>KEY_F2</xsl:text>
362          </xsl:when>
363          <xsl:when test="$key = '74'">
364             <xsl:text>KEY_F3</xsl:text>
365          </xsl:when>
366          <xsl:when test="$key = '75'">
367             <xsl:text>KEY_F4</xsl:text>
368          </xsl:when>
369          <xsl:when test="$key = '76'">
370             <xsl:text>KEY_F5</xsl:text>
371          </xsl:when>
372          <xsl:when test="$key = '77'">
373             <xsl:text>KEY_F6</xsl:text>
374          </xsl:when>
375          <xsl:when test="$key = '78'">
376             <xsl:text>KEY_F7</xsl:text>
377          </xsl:when>
378          <xsl:when test="$key = '79'">
379             <xsl:text>KEY_F8</xsl:text>
380          </xsl:when>
381          <xsl:when test="$key = '80'">
382             <xsl:text>KEY_F9</xsl:text>
383          </xsl:when>
384          <xsl:when test="$key = '81'">
385             <xsl:text>KEY_F10</xsl:text>
386          </xsl:when>
387          <xsl:when test="$key = '82'">
388             <xsl:text>KEY_F11</xsl:text>
389          </xsl:when>
390          <xsl:when test="$key = '83'">
391             <xsl:text>KEY_F12</xsl:text>
392          </xsl:when>
393          <xsl:when test="$key = '84'">
394             <xsl:text>KEY_F13</xsl:text>
395          </xsl:when>
396          <xsl:when test="$key = '85'">
397             <xsl:text>KEY_F14</xsl:text>
398          </xsl:when>
399          <xsl:when test="$key = '86'">
400             <xsl:text>KEY_F15</xsl:text>
401          </xsl:when>
402          <xsl:when test="$key = '87'">
403             <xsl:text>KEY_F16</xsl:text>
404          </xsl:when>
405          <xsl:when test="$key = '88'">
406             <xsl:text>KEY_F17</xsl:text>
407          </xsl:when>
408          <xsl:when test="$key = '89'">
409             <xsl:text>KEY_F18</xsl:text>
410          </xsl:when>
411          <xsl:when test="$key = '90'">
412             <xsl:text>KEY_F19</xsl:text>
413          </xsl:when>
414          <xsl:when test="$key = '91'">
415             <xsl:text>KEY_F20</xsl:text>
416          </xsl:when>
417          <xsl:when test="$key = '92'">
418             <xsl:text>KEY_F21</xsl:text>
419          </xsl:when>
420          <xsl:when test="$key = '93'">
421             <xsl:text>KEY_F22</xsl:text>
422          </xsl:when>
423          <xsl:when test="$key = '94'">
424             <xsl:text>KEY_F23</xsl:text>
425          </xsl:when>
426          <xsl:when test="$key = '95'">
427             <xsl:text>KEY_F24</xsl:text>
428          </xsl:when>
429          <xsl:when test="$key = '96'">
430             <xsl:text>KEY_F25</xsl:text>
431          </xsl:when>
432          <xsl:when test="$key = '97'">
433             <xsl:text>KEY_F26</xsl:text>
434          </xsl:when>
435          <xsl:when test="$key = '98'">
436             <xsl:text>KEY_F27</xsl:text>
437          </xsl:when>
438          <xsl:when test="$key = '99'">
439             <xsl:text>KEY_F28</xsl:text>
440          </xsl:when>
441          <xsl:when test="$key = '100'">
442             <xsl:text>KEY_F29</xsl:text>
443          </xsl:when>
444          <xsl:when test="$key = '101'">
445             <xsl:text>KEY_F30</xsl:text>
446          </xsl:when>
447          <xsl:when test="$key = '102'">
448             <xsl:text>KEY_F31</xsl:text>
449          </xsl:when>
450          <xsl:when test="$key = '103'">
451             <xsl:text>KEY_F32</xsl:text>
452          </xsl:when>
453          <xsl:when test="$key = '104'">
454             <xsl:text>KEY_F33</xsl:text>
455          </xsl:when>
456          <xsl:when test="$key = '105'">
457             <xsl:text>KEY_F34</xsl:text>
458          </xsl:when>
459          <xsl:when test="$key = '106'">
460             <xsl:text>KEY_F35</xsl:text>
461          </xsl:when>
462          <xsl:when test="$key = '107'">
463             <xsl:text>KEY_SUPER_L</xsl:text>
464          </xsl:when>
465          <xsl:when test="$key = '108'">
466             <xsl:text>KEY_SUPER_R</xsl:text>
467          </xsl:when>
468          <xsl:when test="$key = '109'">
469             <xsl:text>KEY_MENU</xsl:text>
470          </xsl:when>
471          <xsl:when test="$key = '110'">
472             <xsl:text>KEY_HYPER_L</xsl:text>
473          </xsl:when>
474          <xsl:when test="$key = '111'">
475             <xsl:text>KEY_HYPER_R</xsl:text>
476          </xsl:when>
477          <xsl:when test="$key = '112'">
478             <xsl:text>KEY_HELP</xsl:text>
479          </xsl:when>
480          <xsl:when test="$key = '113'">
481             <xsl:text>KEY_SPACE</xsl:text>
482          </xsl:when>
483          <xsl:when test="$key = '114'">
484             <xsl:text>KEY_ANY</xsl:text>
485          </xsl:when>
486          <xsl:when test="$key = '115'">
487             <xsl:text>KEY_EXCLAM</xsl:text>
488          </xsl:when>
489          <xsl:when test="$key = '116'">
490             <xsl:text>KEY_QUOTE_DBL</xsl:text>
491          </xsl:when>
492          <xsl:when test="$key = '117'">
493             <xsl:text>KEY_NUMBER_SIGN</xsl:text>
494          </xsl:when>
495          <xsl:when test="$key = '118'">
496             <xsl:text>KEY_DOLLAR</xsl:text>
497          </xsl:when>
498          <xsl:when test="$key = '119'">
499             <xsl:text>KEY_PERCENT</xsl:text>
500          </xsl:when>
501          <xsl:when test="$key = '120'">
502             <xsl:text>KEY_AMPERSAND</xsl:text>
503          </xsl:when>
504          <xsl:when test="$key = '121'">
505             <xsl:text>KEY_APOSTROPHE</xsl:text>
506          </xsl:when>
507          <xsl:when test="$key = '122'">
508             <xsl:text>KEY_PAREN_LEFT</xsl:text>
509          </xsl:when>
510          <xsl:when test="$key = '123'">
511             <xsl:text>KEY_PAREN_RIGHT</xsl:text>
512          </xsl:when>
513          <xsl:when test="$key = '124'">
514             <xsl:text>KEY_ASTERISK</xsl:text>
515          </xsl:when>
516          <xsl:when test="$key = '125'">
517             <xsl:text>KEY_PLUS</xsl:text>
518          </xsl:when>
519          <xsl:when test="$key = '126'">
520             <xsl:text>KEY_COMMA</xsl:text>
521          </xsl:when>
522          <xsl:when test="$key = '127'">
523             <xsl:text>KEY_MINUS</xsl:text>
524          </xsl:when>
525          <xsl:when test="$key = '128'">
526             <xsl:text>KEY_PERIOD</xsl:text>
527          </xsl:when>
528          <xsl:when test="$key = '129'">
529             <xsl:text>KEY_SLASH</xsl:text>
530          </xsl:when>
531          <xsl:when test="$key = '130'">
532             <xsl:text>KEY_COLON</xsl:text>
533          </xsl:when>
534          <xsl:when test="$key = '131'">
535             <xsl:text>KEY_SEMICOLON</xsl:text>
536          </xsl:when>
537          <xsl:when test="$key = '132'">
538             <xsl:text>KEY_LESS</xsl:text>
539          </xsl:when>
540          <xsl:when test="$key = '133'">
541             <xsl:text>KEY_EQUAL</xsl:text>
542          </xsl:when>
543          <xsl:when test="$key = '134'">
544             <xsl:text>KEY_GREATER</xsl:text>
545          </xsl:when>
546          <xsl:when test="$key = '135'">
547             <xsl:text>KEY_QUESTION</xsl:text>
548          </xsl:when>
549          <xsl:when test="$key = '136'">
550             <xsl:text>KEY_AT</xsl:text>
551          </xsl:when>
552          <xsl:when test="$key = '137'">
553             <xsl:text>KEY_BRACKET_LEFT</xsl:text>
554          </xsl:when>
555          <xsl:when test="$key = '138'">
556             <xsl:text>KEY_BACKSLASH</xsl:text>
557          </xsl:when>
558          <xsl:when test="$key = '139'">
559             <xsl:text>KEY_BRACKET_RIGHT</xsl:text>
560          </xsl:when>
561          <xsl:when test="$key = '140'">
562             <xsl:text>KEY_ASCII_CIRCUM</xsl:text>
563          </xsl:when>
564          <xsl:when test="$key = '141'">
565             <xsl:text>KEY_UNDERSCORE</xsl:text>
566          </xsl:when>
567          <xsl:when test="$key = '142'">
568             <xsl:text>KEY_QUOTE_LEFT</xsl:text>
569          </xsl:when>
570          <xsl:when test="$key = '143'">
571             <xsl:text>KEY_BRACE_LEFT</xsl:text>
572          </xsl:when>
573          <xsl:when test="$key = '144'">
574             <xsl:text>KEY_BAR</xsl:text>
575          </xsl:when>
576          <xsl:when test="$key = '145'">
577             <xsl:text>KEY_BRACE_RIGHT</xsl:text>
578          </xsl:when>
579          <xsl:when test="$key = '146'">
580             <xsl:text>KEY_ASCII_TILDE</xsl:text>
581          </xsl:when>
582          <xsl:otherwise>
583             <xsl:value-of select="$key" />
584          </xsl:otherwise>
585       </xsl:choose>
586    </xsl:template>
587
588    <xsl:template name="changeModifier">
589       <xsl:param name="modifier" />
590
591       <xsl:choose>
592          <xsl:when test="$modifier = '0'">
593             <xsl:text>NONE</xsl:text>
594          </xsl:when>
595          <xsl:when test="$modifier = '5'">
596             <xsl:text>SHIFT</xsl:text>
597          </xsl:when>
598          <xsl:when test="$modifier = '6'">
599             <xsl:text>CTRL</xsl:text>
600          </xsl:when>
601          <xsl:when test="$modifier = '7'">
602             <xsl:text>ALT</xsl:text>
603          </xsl:when>
604          <xsl:when test="$modifier = '-1'">
605             <xsl:text>ANY</xsl:text>
606          </xsl:when>
607          <xsl:otherwise>
608             <xsl:value-of select="$modifier" />
609          </xsl:otherwise>
610       </xsl:choose>
611    </xsl:template>
612 </xsl:stylesheet>