From 163838dfccf6ae714128456195671a656dd428f0 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 25 Jun 2008 19:36:19 +0000 Subject: - cleaned up debug messages some and set default message level to 0 (none) - remove [print( and replaced it with [devices( and [elements( - made the [open 0( status output on device close - bumped version number 0.1 in preparation for more work to be done :) svn path=/trunk/externals/io/hidio/; revision=10101 --- hidio-help.pd | 226 ++++++++++++++++++++++++++++++++++++++------------------- hidio.c | 17 ++--- hidio.h | 2 +- hidio_darwin.c | 13 ---- hidio_types.c | 6 +- 5 files changed, 165 insertions(+), 99 deletions(-) diff --git a/hidio-help.pd b/hidio-help.pd index c94d03e..4ecaa2e 100644 --- a/hidio-help.pd +++ b/hidio-help.pd @@ -1,4 +1,4 @@ -#N canvas 219 36 843 580 10; +#N canvas 207 22 843 580 10; #X floatatom 27 445 5 0 0 0 - - -; #X floatatom 83 445 5 0 0 0 - - -; #X obj 191 164 tgl 35 0 empty empty empty 0 -6 0 8 -24198 -1 -1 0 25 @@ -8,7 +8,7 @@ #X symbolatom 544 377 15 0 0 1 event_type - -; #X obj 2 2 cnv 15 600 20 empty empty hidio 2 11 1 18 -233017 -66577 0; -#X text 224 324 outlet message format:; +#X text 284 344 outlet message format:; #X msg 374 130 close; #X msg 374 109 refresh; #X text 435 107 refresh device list; @@ -18,7 +18,7 @@ #X text 473 557 $Author: eighthave $; #X text 425 33 !!! This software is very much alpha \, so any aspect of it could change without notice !!!; -#X obj 9 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 66455 +#X obj 9 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 1 ; #X floatatom 140 445 5 0 0 0 - - -; #X msg 374 151 print; @@ -35,37 +35,37 @@ of it could change without notice !!!; #X floatatom 263 401 6 0 0 0 - - -; #X floatatom 313 401 6 0 0 0 - - -; #X floatatom 363 401 6 0 0 0 - - -; -#X obj 39 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 133004 +#X obj 39 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 1 ; -#X obj 69 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 133004 +#X obj 69 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 1 ; -#X obj 99 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 66455 +#X obj 99 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 1 ; -#X obj 129 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 159 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 189 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -133004; -#X obj 219 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -133004; -#X obj 249 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 279 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -133004; -#X obj 309 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -133004; -#X obj 339 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 369 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 399 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -133004; -#X obj 429 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X obj 459 508 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 -66455; -#X msg 25 155 debug 9; +#X obj 129 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 159 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 189 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 219 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 249 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 279 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 309 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 339 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 369 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 399 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 429 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 459 510 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X msg 25 155 debug 0; #X msg 298 135 info; #N canvas 743 25 411 235 see 0; #N canvas 108 318 543 264 route 0; @@ -188,14 +188,14 @@ IDs (it is not case sensitive):; #X connect 2 0 4 0; #X connect 7 0 4 0; #X restore 174 37 pd open by vendor/product ID; -#X msg 225 309 button button_2 0 0; +#X msg 285 329 key e 0 0; #X text 49 543 (C) Copyright 2004 Hans-Christoph Steiner ; #N canvas 162 133 570 420 serin 0; -#X obj 209 61 cnv 15 15 15 empty \$0-debug-canvas 9 4 8 0 14 -233017 +#X obj 209 61 cnv 15 15 15 empty \$0-debug-canvas 0 4 8 0 14 -233017 -1 0; #X obj 60 61 hradio 15 1 1 10 empty empty empty 0 -6 0 8 -261689 -1 --1 9; +-1 0; #X obj 60 13 inlet; #X msg 200 202 label \$1; #X obj 200 180 makefilename %d; @@ -220,10 +220,10 @@ IDs (it is not case sensitive):; #X coords 0 -1 1 1 165 17 1 60 60; #X restore 25 134 pd serin; #N canvas 162 133 570 420 serin 0; -#X obj 286 61 cnv 15 30 15 empty \$0-open-canvas 6 4 8 0 14 -233017 +#X obj 286 61 cnv 15 30 15 empty \$0-open-canvas 1 4 8 0 14 -233017 -1 0; #X obj 60 61 hradio 15 1 1 15 empty empty empty 0 -6 0 8 -225271 -1 --1 6; +-1 1; #X obj 60 13 inlet; #X msg 200 202 label \$1; #X obj 200 180 makefilename %d; @@ -249,12 +249,12 @@ IDs (it is not case sensitive):; #X restore 262 83 pd serin; #X obj 646 486 pddp/open all_about_hid; #X obj 306 244 hidio; -#X obj 226 290 flatspace/prepend set; +#X obj 286 310 flatspace/prepend set; #X obj 544 315 unpack symbol symbol float float; #X floatatom 683 336 2 0 0 1 instance - -; #X obj 65 368 route x y z rx ry rz slider dial; #X obj 10 314 route key relative absolute; -#X text 218 341 [event_type event_code instance value(; +#X text 278 361 [event_type event_code instance value(; #N canvas 0 22 454 304 remove 0; #X obj 134 12 inlet; #X obj 109 60 unpack symbol symbol float float; @@ -267,9 +267,7 @@ IDs (it is not case sensitive):; #X connect 1 3 2 2; #X connect 2 0 3 0; #X connect 3 0 4 0; -#X restore 10 293 pd remove instance numbers; -#X obj 9 466 route a_key b_key c_key d_key e_key f_key g_key h_key -i_key j_key k_key l_key m_key n_key o_key p_key; +#X restore 99 272 pd remove instance numbers; #N canvas 114 93 487 366 raw 0; #X obj 144 45 inlet; #X obj 88 104 route DESKTOP; @@ -297,11 +295,11 @@ i_key j_key k_key l_key m_key n_key o_key p_key; #X connect 8 0 11 0; #X connect 9 0 8 1; #X connect 10 0 9 0; -#X restore 408 294 pd raw; +#X restore 315 284 pd raw; #X floatatom 63 401 6 0 0 0 - - -; -#X obj 455 295 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +#X obj 362 285 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; -#X msg 262 104 open 6; +#X msg 262 104 open 1; #N canvas 766 107 771 427 output 0; #X obj 286 341 outlet; #X msg 112 70 255; @@ -405,6 +403,87 @@ i_key j_key k_key l_key m_key n_key o_key p_key; #X msg 374 172 devices; #X msg 374 193 elements; #X text 437 194 print a list of elements for the current device; +#X obj 9 478 route a b c d e f g h i j k l m n o p; +#N canvas 840 22 558 266 key_0 0; +#X obj 17 17 inlet; +#X obj 17 54 route key; +#X obj 17 86 route key_0; +#X obj 17 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 1 +; +#X obj 47 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 133004 +; +#X obj 77 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 133004 +; +#X obj 107 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 137 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 167 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 197 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 227 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 257 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 287 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 317 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 347 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 377 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 407 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 437 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 467 206 tgl 25 0 empty empty empty 0 -6 0 8 -195568 -1 -1 0 +1; +#X obj 17 114 route 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0; +#X msg 381 142 0; +#X text 177 31 On some platforms \, you key a duplicate set of key +messages where the key type is key_0 and the value is the number of +the key pressed.; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 19 0; +#X connect 19 0 3 0; +#X connect 19 1 4 0; +#X connect 19 2 5 0; +#X connect 19 3 6 0; +#X connect 19 4 7 0; +#X connect 19 5 8 0; +#X connect 19 6 9 0; +#X connect 19 7 10 0; +#X connect 19 8 11 0; +#X connect 19 9 12 0; +#X connect 19 10 13 0; +#X connect 19 11 14 0; +#X connect 19 12 15 0; +#X connect 19 13 16 0; +#X connect 19 14 17 0; +#X connect 19 15 18 0; +#X connect 19 16 20 0; +#X connect 20 0 3 0; +#X connect 20 0 4 0; +#X connect 20 0 18 0; +#X connect 20 0 17 0; +#X connect 20 0 16 0; +#X connect 20 0 15 0; +#X connect 20 0 14 0; +#X connect 20 0 13 0; +#X connect 20 0 12 0; +#X connect 20 0 11 0; +#X connect 20 0 10 0; +#X connect 20 0 9 0; +#X connect 20 0 8 0; +#X connect 20 0 7 0; +#X connect 20 0 6 0; +#X connect 20 0 5 0; +#X restore 103 293 pd key_0 key mapping; +#X text 14 462 (following the USB standard \, US keycodes are used) +; #X connect 2 0 57 0; #X connect 8 0 57 0; #X connect 9 0 57 0; @@ -414,8 +493,8 @@ i_key j_key k_key l_key m_key n_key o_key p_key; #X connect 50 0 57 0; #X connect 51 0 57 0; #X connect 54 0 47 0; -#X connect 55 0 69 0; -#X connect 57 0 66 0; +#X connect 55 0 68 0; +#X connect 57 0 65 0; #X connect 57 0 59 0; #X connect 57 0 58 0; #X connect 57 0 64 0; @@ -425,40 +504,41 @@ i_key j_key k_key l_key m_key n_key o_key p_key; #X connect 59 1 4 0; #X connect 59 2 60 0; #X connect 59 3 3 0; -#X connect 61 0 67 0; +#X connect 61 0 66 0; #X connect 61 1 26 0; #X connect 61 2 27 0; #X connect 61 3 28 0; #X connect 61 4 29 0; #X connect 61 5 30 0; #X connect 61 6 31 0; -#X connect 62 0 65 0; -#X connect 62 1 71 0; +#X connect 62 0 76 0; +#X connect 62 1 70 0; #X connect 62 2 61 0; #X connect 64 0 62 0; -#X connect 65 0 16 0; -#X connect 65 1 32 0; -#X connect 65 2 33 0; -#X connect 65 3 34 0; -#X connect 65 4 35 0; -#X connect 65 5 36 0; -#X connect 65 6 37 0; -#X connect 65 7 38 0; -#X connect 65 8 39 0; -#X connect 65 9 40 0; -#X connect 65 10 41 0; -#X connect 65 11 42 0; -#X connect 65 12 43 0; -#X connect 65 13 44 0; -#X connect 65 14 45 0; -#X connect 65 15 46 0; -#X connect 68 0 66 1; +#X connect 64 0 77 0; +#X connect 67 0 65 1; +#X connect 68 0 57 0; #X connect 69 0 57 0; -#X connect 70 0 57 0; -#X connect 71 0 0 0; -#X connect 71 1 1 0; -#X connect 71 2 17 0; -#X connect 71 4 25 0; -#X connect 71 5 72 0; +#X connect 70 0 0 0; +#X connect 70 1 1 0; +#X connect 70 2 17 0; +#X connect 70 4 25 0; +#X connect 70 5 71 0; +#X connect 73 0 57 0; #X connect 74 0 57 0; -#X connect 75 0 57 0; +#X connect 76 0 16 0; +#X connect 76 1 32 0; +#X connect 76 2 33 0; +#X connect 76 3 34 0; +#X connect 76 4 35 0; +#X connect 76 5 36 0; +#X connect 76 6 37 0; +#X connect 76 7 38 0; +#X connect 76 8 39 0; +#X connect 76 9 40 0; +#X connect 76 10 41 0; +#X connect 76 11 42 0; +#X connect 76 12 43 0; +#X connect 76 13 44 0; +#X connect 76 14 45 0; +#X connect 76 15 46 0; diff --git a/hidio.c b/hidio.c index 81580dc..941d492 100644 --- a/hidio.c +++ b/hidio.c @@ -45,7 +45,7 @@ #define DEBUG(x) //#define DEBUG(x) x -unsigned short global_debug_level = 0; +unsigned short global_debug_level = 0; /* high numbers means more messages */ /*------------------------------------------------------------------------------ * GLOBAL VARIABLES @@ -233,7 +233,6 @@ static short get_device_number_from_arguments(int argc, t_atom *argv) if(first_argument == _sym_nothing) #endif /* PD */ { // single float arg means device # - post("first_argument == &s_"); #ifdef PD device_number = (short) atom_getfloatarg(0,argc,argv); #else @@ -435,12 +434,13 @@ static void hidio_close(t_hidio *x) /* just to be safe, stop it first */ hidio_stop_poll(x); - + if(! hidio_close_device(x)) { debug_post(LOG_INFO,"[hidio] closed device %d",x->x_device_number); x->x_device_open = 0; } + output_open_status(x); } @@ -483,11 +483,12 @@ static void hidio_open(t_hidio *x, t_symbol *s, int argc, t_atom *argv) else { x->x_device_number = -1; - error("[hidio] can not open device %d",new_device_number); + pd_error(x, "[hidio] can not open device %d",new_device_number); } } } - else debug_post(LOG_WARNING,"[hidio] device does not exist"); + else + debug_error(x, LOG_WARNING,"[hidio] device does not exist"); /* always output open result so you can test for success in Pd space */ output_open_status(x); } @@ -605,7 +606,6 @@ static void *hidio_new(t_symbol *s, int argc, t_atom *argv) #endif /* PD */ /* init vars */ - global_debug_level = 9; /* high numbers here means see more messages */ x->x_device_open = 0; x->x_started = 0; x->x_delay = DEFAULT_DELAY; @@ -642,7 +642,6 @@ void hidio_setup(void) /* TODO: [print( should be dumped for [devices( and [elements( messages */ class_addmethod(hidio_class,(t_method) hidio_devices,gensym("devices"),0); class_addmethod(hidio_class,(t_method) hidio_elements,gensym("elements"),0); - class_addmethod(hidio_class,(t_method) hidio_print,gensym("print"),0); class_addmethod(hidio_class,(t_method) hidio_info,gensym("info"),0); class_addmethod(hidio_class,(t_method) hidio_open,gensym("open"),A_GIMME,0); class_addmethod(hidio_class,(t_method) hidio_close,gensym("close"),0); @@ -652,7 +651,7 @@ void hidio_setup(void) class_addmethod(hidio_class,(t_method) hidio_write_event, gensym("write"), A_GIMME ,0); - post("[hidio] %d.%d, written by Hans-Christoph Steiner ", + post("[hidio] %d.%d: © 2004-2008 by Hans-Christoph Steiner & Olaf Matthes", HIDIO_MAJOR_VERSION, HIDIO_MINOR_VERSION); post("\tcompiled on "__DATE__" at "__TIME__ " "); @@ -748,7 +747,7 @@ int main() hidio_class = c; finder_addclass("Devices", "hidio"); - post("hidio %d.%d: © 2006 by Hans-Christoph Steiner & Olaf Matthes", + post("hidio %d.%d: © 2004-2008 by Hans-Christoph Steiner & Olaf Matthes", HIDIO_MAJOR_VERSION, HIDIO_MINOR_VERSION); post("hidio: compiled on "__DATE__" at "__TIME__ " "); diff --git a/hidio.h b/hidio.h index 56c4d5f..1474791 100644 --- a/hidio.h +++ b/hidio.h @@ -44,7 +44,7 @@ typedef void t_clock; #define HIDIO_MAJOR_VERSION 0 -#define HIDIO_MINOR_VERSION 0 +#define HIDIO_MINOR_VERSION 1 /* static char *version = "$Revision: 1.20 $"; */ diff --git a/hidio_darwin.c b/hidio_darwin.c index 2cc5f6e..1eb6bf4 100644 --- a/hidio_darwin.c +++ b/hidio_darwin.c @@ -865,19 +865,6 @@ void hidio_build_device_list(void) debug_post(LOG_WARNING,"[hidio] completed device list."); } -/* TODO: this should be dumped for [devices( and [elements( messages */ -void hidio_print(t_hidio *x) -{ - if( !HIDHaveDeviceList() ) hidio_build_device_list(); - hidio_devices(x); - if(x->x_device_open) - { - hidio_elements(x); - hidio_ff_print(x); - } -} - - void hidio_platform_specific_free(t_hidio *x) { int j; diff --git a/hidio_types.c b/hidio_types.c index 4a69bda..d141904 100644 --- a/hidio_types.c +++ b/hidio_types.c @@ -5,8 +5,8 @@ #endif #include "hidio.h" -//#define DEBUG(x) -#define DEBUG(x) x +#define DEBUG(x) +//#define DEBUG(x) x /*============================================================================== @@ -23,7 +23,7 @@ static char *absolute_strings[ABSOLUTE_ARRAY_MAX] = { /* keys (keyboards, keypads) */ static char *key_strings[KEY_ARRAY_MAX] = { - "key_0","errorrollover","postfail","errorundefined","a_key","b_key","c_key","d_key","e_key","f_key","g_key","h_key","i_key","j_key","k_key","l_key","m_key","n_key","o_key","p_key","q_key","r_key","s_key","t_key","u_key","v_key","w_key","x_key","y_key","z_key","1_key","2_key","3_key","4_key","5_key","6_key","7_key","8_key","9_key","0_key","enter","escape","deleteorbackspace","tab","spacebar","hyphen","equalsign","openbracket","closebracket","backslash","nonuspound","semicolon","quote","graveaccentandtilde","comma","period","slash","capslock","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","printscreen","scrolllock","pause","insert","home","pageup","deleteforward","end","pagedown","rightarrow","leftarrow","downarrow","uparrow","keypad_numlock","keypad_slash","keypad_asterisk","keypad_hyphen","keypad_plus","keypad_enter","keypad_1","keypad_2","keypad_3","keypad_4","keypad_5","keypad_6","keypad_7","keypad_8","keypad_9","keypad_0","keypad_period","nonusbackslash","application","power","keypad_equalsign","f13","f14","f15","f16","f17","f18","f19","f20","f21","f22","f23","f24","execute","help","menu","select","stop","again","undo","cut","copy","paste","find","mute","volumeup","volumedown","lockingcapslock","lockingnumlock","lockingscrolllock","keypad_comma","keypad_equalsignas400","international1","international2","international3","international4","international5","international6","international7","international8","international9","lang1","lang2","lang3","lang4","lang5","lang6","lang7","lang8","lang9","alternateerase","sysreqorattention","cancel","clear","prior","return","separator","out","oper","clearoragain","crselorprops","exsel","key_165","key_166","key_167","key_168","key_169","key_170","key_171","key_172","key_173","key_174","key_175","key_176","key_177","key_178","key_179","key_180","key_181","key_182","key_183","key_184","key_185","key_186","key_187","key_188","key_189","key_190","key_191","key_192","key_193","key_194","key_195","key_196","key_197","key_198","key_199","key_200","key_201","key_202","key_203","key_204","key_205","key_206","key_207","key_208","key_209","key_210","key_211","key_212","key_213","key_214","key_215","key_216","key_217","key_218","key_219","key_220","key_221","key_222","key_223","leftcontrol","leftshift","leftalt","leftgui","rightcontrol","rightshift","rightalt","rightgui","key_232","key_233","key_234","key_235","key_236","key_237","key_238","key_239","key_240","key_241","key_242","key_243","key_244","key_245","key_246","key_247","key_248","key_249","key_250","key_251","key_252","key_253","key_254","key_255" + "key_0","errorrollover","postfail","errorundefined","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","1_key","2_key","3_key","4_key","5_key","6_key","7_key","8_key","9_key","0_key","enter","escape","deleteorbackspace","tab","spacebar","hyphen","equalsign","openbracket","closebracket","backslash","nonuspound","semicolon","quote","graveaccentandtilde","comma","period","slash","capslock","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","printscreen","scrolllock","pause","insert","home","pageup","deleteforward","end","pagedown","rightarrow","leftarrow","downarrow","uparrow","keypad_numlock","keypad_slash","keypad_asterisk","keypad_hyphen","keypad_plus","keypad_enter","keypad_1","keypad_2","keypad_3","keypad_4","keypad_5","keypad_6","keypad_7","keypad_8","keypad_9","keypad_0","keypad_period","nonusbackslash","application","power","keypad_equalsign","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","execute","help","menu","select","stop","again","undo","cut","copy","paste","find","mute","volumeup","volumedown","lockingcapslock","lockingnumlock","lockingscrolllock","keypad_comma","keypad_equalsignas400","international1","international2","international3","international4","international5","international6","international7","international8","international9","lang1","lang2","lang3","lang4","lang5","lang6","lang7","lang8","lang9","alternateerase","sysreqorattention","cancel","clear","prior","return","separator","out","oper","clearoragain","crselorprops","exsel","key_165","key_166","key_167","key_168","key_169","key_170","key_171","key_172","key_173","key_174","key_175","key_176","key_177","key_178","key_179","key_180","key_181","key_182","key_183","key_184","key_185","key_186","key_187","key_188","key_189","key_190","key_191","key_192","key_193","key_194","key_195","key_196","key_197","key_198","key_199","key_200","key_201","key_202","key_203","key_204","key_205","key_206","key_207","key_208","key_209","key_210","key_211","key_212","key_213","key_214","key_215","key_216","key_217","key_218","key_219","key_220","key_221","key_222","key_223","leftcontrol","leftshift","leftalt","leftgui","rightcontrol","rightshift","rightalt","rightgui","key_232","key_233","key_234","key_235","key_236","key_237","key_238","key_239","key_240","key_241","key_242","key_243","key_244","key_245","key_246","key_247","key_248","key_249","key_250","key_251","key_252","key_253","key_254","key_255" }; -- cgit v1.2.1