summaryrefslogtreecommitdiff
path: root/xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m
diff options
context:
space:
mode:
Diffstat (limited to 'xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m')
-rw-r--r--xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m1327
1 files changed, 1327 insertions, 0 deletions
diff --git a/xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m b/xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m
new file mode 100644
index 00000000..2affb55f
--- /dev/null
+++ b/xts5/Xopen/XKeysymToKeycode/XKeysymToKeycode.m
@@ -0,0 +1,1327 @@
+Copyright (c) 2005 X.Org Foundation L.L.C.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+$Header: /cvs/xtest/xtest/xts5/tset/Xopen/XKeysymToKeycode/XKeysymToKeycode.m,v 1.2 2005-11-03 08:44:00 jmichael Exp $
+
+>># Project: VSW5
+>>#
+>># File: xts5/tset/Xopen/XKeysymToKeycode/XKeysymToKeycode.m
+>>#
+>># Description:
+>># Tests for XKeysymToKeycode()
+>>#
+>># Modifications:
+>># $Log: kysymtkycd.m,v $
+>># Revision 1.2 2005-11-03 08:44:00 jmichael
+>># clean up all vsw5 paths to use xts5 instead.
+>>#
+>># Revision 1.1.1.2 2005/04/15 14:05:40 anderson
+>># Reimport of the base with the legal name in the copyright fixed.
+>>#
+>># Revision 8.0 1998/12/23 23:35:51 mar
+>># Branch point for Release 5.0.2
+>>#
+>># Revision 7.0 1998/10/30 22:58:32 mar
+>># Branch point for Release 5.0.2b1
+>>#
+>># Revision 6.0 1998/03/02 05:27:04 tbr
+>># Branch point for Release 5.0.1
+>>#
+>># Revision 5.0 1998/01/26 03:23:38 tbr
+>># Branch point for Release 5.0.1b1
+>>#
+>># Revision 4.0 1995/12/15 09:14:23 tbr
+>># Branch point for Release 5.0.0
+>>#
+>># Revision 3.1 1995/12/15 01:17:48 andy
+>># Prepare for GA Release
+>>#
+/*
+ * SCCS: @(#) kysymtkycd.m Rel 1.5 (11/28/91)
+ *
+ * UniSoft Ltd., London, England
+ *
+ * (C) Copyright 1991 X/Open Company Limited
+ *
+ * All rights reserved. No part of this source code may be reproduced,
+ * stored in a retrieval system, or transmitted, in any form or by any
+ * means, electronic, mechanical, photocopying, recording or otherwise,
+ * except as stated in the end-user licence agreement, without the prior
+ * permission of the copyright owners.
+ *
+ * X/Open and the 'X' symbol are trademarks of X/Open Company Limited in
+ * the UK and other countries.
+ */
+
+>>TITLE XKeysymToKeycode Xopen
+>>CFILES Test1.c Test2.c Test3.c Test4.c TestA.c TestC.c TestG.c TestH.c TestK.c TestL.c TestM.c TestP.c TestS.c TestT.c
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code 1,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "1" "20" "XK_space"
+.tL "1" "21" "XK_exclam"
+.tL "1" "22" "XK_quotedbl"
+.tL "1" "23" "XK_numbersign"
+.tL "1" "24" "XK_dollar"
+.tL "1" "25" "XK_percent"
+.tL "1" "26" "XK_ampersand"
+.tL "1" "27" "XK_apostrophe"
+.tL "1" "27" "XK_quoteright"
+.tL "1" "28" "XK_parenleft"
+.tL "1" "29" "XK_parenright"
+.tL "1" "2A" "XK_asterisk"
+.tL "1" "2B" "XK_plus"
+.tL "1" "2C" "XK_comma"
+.tL "1" "2D" "XK_minus"
+.tL "1" "2E" "XK_period"
+.tL "1" "2F" "XK_slash"
+.tL "1" "30" "XK_0"
+.tL "1" "31" "XK_1"
+.tL "1" "32" "XK_2"
+.tL "1" "33" "XK_3"
+.tL "1" "34" "XK_4"
+.tL "1" "35" "XK_5"
+.tL "1" "36" "XK_6"
+.tL "1" "37" "XK_7"
+.tL "1" "38" "XK_8"
+.tL "1" "39" "XK_9"
+.tL "1" "3A" "XK_colon"
+.tL "1" "3B" "XK_semicolon"
+.tL "1" "3C" "XK_less"
+.tL "1" "3D" "XK_equal"
+.tL "1" "3E" "XK_greater"
+.tL "1" "3F" "XK_question"
+.tL "1" "40" "XK_at"
+.tL "1" "41" "XK_A"
+.tL "1" "42" "XK_B"
+.tL "1" "43" "XK_C"
+.tL "1" "44" "XK_D"
+.tL "1" "45" "XK_E"
+.tL "1" "46" "XK_F"
+.tL "1" "47" "XK_G"
+.tL "1" "48" "XK_H"
+.tL "1" "49" "XK_I"
+.tL "1" "4A" "XK_J"
+.tL "1" "4B" "XK_K"
+.tL "1" "4C" "XK_L"
+.tL "1" "4D" "XK_M"
+.tL "1" "4E" "XK_N"
+.tL "1" "4F" "XK_O"
+.tL "1" "50" "XK_P"
+.tL "1" "51" "XK_Q"
+.tL "1" "52" "XK_R"
+.tL "1" "53" "XK_S"
+.tL "1" "54" "XK_T"
+.tL "1" "55" "XK_U"
+.tL "1" "56" "XK_V"
+.tL "1" "57" "XK_W"
+.tL "1" "58" "XK_X"
+.tL "1" "59" "XK_Y"
+.tL "1" "5A" "XK_Z"
+.tL "1" "5B" "XK_bracketleft"
+.tL "1" "5C" "XK_backslash"
+.tL "1" "5D" "XK_bracketright"
+.tL "1" "5E" "XK_asciicircum"
+.tL "1" "5F" "XK_underscore"
+.tL "1" "60" "XK_grave"
+.tL "1" "60" "XK_quoteleft"
+.tL "1" "61" "XK_a"
+.tL "1" "62" "XK_b"
+.tL "1" "63" "XK_c"
+.tL "1" "64" "XK_d"
+.tL "1" "65" "XK_e"
+.tL "1" "66" "XK_f"
+.tL "1" "67" "XK_g"
+.tL "1" "68" "XK_h"
+.tL "1" "69" "XK_i"
+.tL "1" "6A" "XK_j"
+.tL "1" "6B" "XK_k"
+.tL "1" "6C" "XK_l"
+.tL "1" "6D" "XK_m"
+.tL "1" "6E" "XK_n"
+.tL "1" "6F" "XK_o"
+.tL "1" "70" "XK_p"
+.tL "1" "71" "XK_q"
+.tL "1" "72" "XK_r"
+.tL "1" "73" "XK_s"
+.tL "1" "74" "XK_t"
+.tL "1" "75" "XK_u"
+.tL "1" "76" "XK_v"
+.tL "1" "77" "XK_w"
+.tL "1" "78" "XK_x"
+.tL "1" "79" "XK_y"
+.tL "1" "7A" "XK_z"
+.tL "1" "7B" "XK_braceleft"
+.tL "1" "7C" "XK_bar"
+.tL "1" "7D" "XK_braceright"
+.tL "1" "7E" "XK_asciitilde"
+.tL "1" "A0" "XK_nobreakspace"
+.tL "1" "A1" "XK_exclamdown"
+.tL "1" "A2" "XK_cent"
+.tL "1" "A3" "XK_sterling"
+.tL "1" "A4" "XK_currency"
+.tL "1" "A5" "XK_yen"
+.tL "1" "A6" "XK_brokenbar"
+.tL "1" "A7" "XK_section"
+.tL "1" "A8" "XK_diaeresis"
+.tL "1" "A9" "XK_copyright"
+.tL "1" "AA" "XK_ordfeminine"
+.tL "1" "AB" "XK_guillemotleft"
+.tL "1" "AC" "XK_notsign"
+.tL "1" "AD" "XK_hyphen"
+.tL "1" "AE" "XK_registered"
+.tL "1" "AF" "XK_macron"
+.tL "1" "B0" "XK_degree"
+.tL "1" "B1" "XK_plusminus"
+.tL "1" "B2" "XK_twosuperior"
+.tL "1" "B3" "XK_threesuperior"
+.tL "1" "B4" "XK_acute"
+.tL "1" "B5" "XK_mu"
+.tL "1" "B6" "XK_paragraph"
+.tL "1" "B7" "XK_periodcentered"
+.tL "1" "B8" "XK_cedilla"
+.tL "1" "B9" "XK_onesuperior"
+.tL "1" "BA" "XK_masculine"
+.tL "1" "BB" "XK_guillemotright"
+.tL "1" "BC" "XK_onequarter"
+.tL "1" "BD" "XK_onehalf"
+.tL "1" "BE" "XK_threequarters"
+.tL "1" "BF" "XK_questiondown"
+.tL "1" "C0" "XK_Agrave"
+.tL "1" "C1" "XK_Aacute"
+.tL "1" "C2" "XK_Acircumflex"
+.tL "1" "C3" "XK_Atilde"
+.tL "1" "C4" "XK_Adiaeresis"
+.tL "1" "C5" "XK_Aring"
+.tL "1" "C6" "XK_AE"
+.tL "1" "C7" "XK_Ccedilla"
+.tL "1" "C8" "XK_Egrave"
+.tL "1" "C9" "XK_Eacute"
+.tL "1" "CA" "XK_Ecircumflex"
+.tL "1" "CB" "XK_Ediaeresis"
+.tL "1" "CC" "XK_Igrave"
+.tL "1" "CD" "XK_Iacute"
+.tL "1" "CE" "XK_Icircumflex"
+.tL "1" "CF" "XK_Idiaeresis"
+.tL "1" "D0" "XK_ETH"
+.tL "1" "D0" "XK_Eth"
+.tL "1" "D1" "XK_Ntilde"
+.tL "1" "D2" "XK_Ograve"
+.tL "1" "D3" "XK_Oacute"
+.tL "1" "D4" "XK_Ocircumflex"
+.tL "1" "D5" "XK_Otilde"
+.tL "1" "D6" "XK_Odiaeresis"
+.tL "1" "D7" "XK_multiply"
+.tL "1" "D8" "XK_Ooblique"
+.tL "1" "D9" "XK_Ugrave"
+.tL "1" "DA" "XK_Uacute"
+.tL "1" "DB" "XK_Ucircumflex"
+.tL "1" "DC" "XK_Udiaeresis"
+.tL "1" "DD" "XK_Yacute"
+.tL "1" "DE" "XK_THORN"
+.tL "1" "DE" "XK_Thorn"
+.tL "1" "DF" "XK_ssharp"
+.tL "1" "E0" "XK_agrave"
+.tL "1" "E1" "XK_aacute"
+.tL "1" "E2" "XK_acircumflex"
+.tL "1" "E3" "XK_atilde"
+.tL "1" "E4" "XK_adiaeresis"
+.tL "1" "E5" "XK_aring"
+.tL "1" "E6" "XK_ae"
+.tL "1" "E7" "XK_ccedilla"
+.tL "1" "E8" "XK_egrave"
+.tL "1" "E9" "XK_eacute"
+.tL "1" "EA" "XK_ecircumflex"
+.tL "1" "EB" "XK_ediaeresis"
+.tL "1" "EC" "XK_igrave"
+.tL "1" "ED" "XK_iacute"
+.tL "1" "EE" "XK_icircumflex"
+.tL "1" "EF" "XK_idiaeresis"
+.tL "1" "F0" "XK_eth"
+.tL "1" "F1" "XK_ntilde"
+.tL "1" "F2" "XK_ograve"
+.tL "1" "F3" "XK_oacute"
+.tL "1" "F4" "XK_ocircumflex"
+.tL "1" "F5" "XK_otilde"
+.tL "1" "F6" "XK_odiaeresis"
+.tL "1" "F7" "XK_division"
+.tL "1" "F8" "XK_oslash"
+.tL "1" "F9" "XK_ugrave"
+.tL "1" "FA" "XK_uacute"
+.tL "1" "FB" "XK_ucircumflex"
+.tL "1" "FC" "XK_udiaeresis"
+.tL "1" "FD" "XK_yacute"
+.tL "1" "FE" "XK_thorn"
+.tL "1" "FF" "XK_ydiaeresis"
+>>STRATEGY
+For each KeySym in table with code 1:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcd1();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code 2,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "2" "1A1" "XK_Aogonek"
+.tL "2" "1A2" "XK_breve"
+.tL "2" "1A3" "XK_Lstroke"
+.tL "2" "1A5" "XK_Lcaron"
+.tL "2" "1A6" "XK_Sacute"
+.tL "2" "1A9" "XK_Scaron"
+.tL "2" "1AA" "XK_Scedilla"
+.tL "2" "1AB" "XK_Tcaron"
+.tL "2" "1AC" "XK_Zacute"
+.tL "2" "1AE" "XK_Zcaron"
+.tL "2" "1AF" "XK_Zabovedot"
+.tL "2" "1B1" "XK_aogonek"
+.tL "2" "1B2" "XK_ogonek"
+.tL "2" "1B3" "XK_lstroke"
+.tL "2" "1B5" "XK_lcaron"
+.tL "2" "1B6" "XK_sacute"
+.tL "2" "1B7" "XK_caron"
+.tL "2" "1B9" "XK_scaron"
+.tL "2" "1BA" "XK_scedilla"
+.tL "2" "1BB" "XK_tcaron"
+.tL "2" "1BC" "XK_zacute"
+.tL "2" "1BD" "XK_doubleacute"
+.tL "2" "1BE" "XK_zcaron"
+.tL "2" "1BF" "XK_zabovedot"
+.tL "2" "1C0" "XK_Racute"
+.tL "2" "1C3" "XK_Abreve"
+.tL "2" "1C5" "XK_Lacute"
+.tL "2" "1C6" "XK_Cacute"
+.tL "2" "1C8" "XK_Ccaron"
+.tL "2" "1CA" "XK_Eogonek"
+.tL "2" "1CC" "XK_Ecaron"
+.tL "2" "1CF" "XK_Dcaron"
+.tL "2" "1D0" "XK_Dstroke"
+.tL "2" "1D1" "XK_Nacute"
+.tL "2" "1D2" "XK_Ncaron"
+.tL "2" "1D5" "XK_Odoubleacute"
+.tL "2" "1D8" "XK_Rcaron"
+.tL "2" "1D9" "XK_Uring"
+.tL "2" "1DB" "XK_Udoubleacute"
+.tL "2" "1DE" "XK_Tcedilla"
+.tL "2" "1E0" "XK_racute"
+.tL "2" "1E3" "XK_abreve"
+.tL "2" "1E5" "XK_lacute"
+.tL "2" "1E6" "XK_cacute"
+.tL "2" "1E8" "XK_ccaron"
+.tL "2" "1EA" "XK_eogonek"
+.tL "2" "1EC" "XK_ecaron"
+.tL "2" "1EF" "XK_dcaron"
+.tL "2" "1F0" "XK_dstroke"
+.tL "2" "1F1" "XK_nacute"
+.tL "2" "1F2" "XK_ncaron"
+.tL "2" "1F5" "XK_odoubleacute"
+.tL "2" "1F8" "XK_rcaron"
+.tL "2" "1F9" "XK_uring"
+.tL "2" "1FB" "XK_udoubleacute"
+.tL "2" "1FE" "XK_tcedilla"
+.tL "2" "1FF" "XK_abovedot"
+>>STRATEGY
+For each KeySym in table with code 2:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcd2();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code 3,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "3" "2A1" "XK_Hstroke"
+.tL "3" "2A6" "XK_Hcircumflex"
+.tL "3" "2A9" "XK_Iabovedot"
+.tL "3" "2AB" "XK_Gbreve"
+.tL "3" "2AC" "XK_Jcircumflex"
+.tL "3" "2B1" "XK_hstroke"
+.tL "3" "2B6" "XK_hcircumflex"
+.tL "3" "2B9" "XK_idotless"
+.tL "3" "2BB" "XK_gbreve"
+.tL "3" "2BC" "XK_jcircumflex"
+.tL "3" "2C5" "XK_Cabovedot"
+.tL "3" "2C6" "XK_Ccircumflex"
+.tL "3" "2D5" "XK_Gabovedot"
+.tL "3" "2D8" "XK_Gcircumflex"
+.tL "3" "2DD" "XK_Ubreve"
+.tL "3" "2DE" "XK_Scircumflex"
+.tL "3" "2E5" "XK_cabovedot"
+.tL "3" "2E6" "XK_ccircumflex"
+.tL "3" "2F5" "XK_gabovedot"
+.tL "3" "2F8" "XK_gcircumflex"
+.tL "3" "2FD" "XK_ubreve"
+.tL "3" "2FE" "XK_scircumflex"
+>>STRATEGY
+For each KeySym in table with code 3:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcd3();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code 4,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "4" "3A2" "XK_kra"
+.tL "4" "3A2" "XK_kappa"
+.tL "4" "3A3" "XK_Rcedilla"
+.tL "4" "3A5" "XK_Itilde"
+.tL "4" "3A6" "XK_Lcedilla"
+.tL "4" "3AA" "XK_Emacron"
+.tL "4" "3AB" "XK_Gcedilla"
+.tL "4" "3AC" "XK_Tslash"
+.tL "4" "3B3" "XK_rcedilla"
+.tL "4" "3B5" "XK_itilde"
+.tL "4" "3B6" "XK_lcedilla"
+.tL "4" "3BA" "XK_emacron"
+.tL "4" "3BB" "XK_gcedilla"
+.tL "4" "3BC" "XK_tslash"
+.tL "4" "3BD" "XK_ENG"
+.tL "4" "3BF" "XK_eng"
+.tL "4" "3C0" "XK_Amacron"
+.tL "4" "3C7" "XK_Iogonek"
+.tL "4" "3CC" "XK_Eabovedot"
+.tL "4" "3CF" "XK_Imacron"
+.tL "4" "3D1" "XK_Ncedilla"
+.tL "4" "3D2" "XK_Omacron"
+.tL "4" "3D3" "XK_Kcedilla"
+.tL "4" "3D9" "XK_Uogonek"
+.tL "4" "3DD" "XK_Utilde"
+.tL "4" "3DE" "XK_Umacron"
+.tL "4" "3E0" "XK_amacron"
+.tL "4" "3E7" "XK_iogonek"
+.tL "4" "3EC" "XK_eabovedot"
+.tL "4" "3EF" "XK_imacron"
+.tL "4" "3F1" "XK_ncedilla"
+.tL "4" "3F2" "XK_omacron"
+.tL "4" "3F3" "XK_kcedilla"
+.tL "4" "3F9" "XK_uogonek"
+.tL "4" "3FD" "XK_utilde"
+.tL "4" "3FE" "XK_umacron"
+>>STRATEGY
+For each KeySym in table with code 4:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcd4();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code A,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "A" "5AC" "XK_Arabic_comma"
+.tL "A" "5BB" "XK_Arabic_semicolon"
+.tL "A" "5BF" "XK_Arabic_question_mark"
+.tL "A" "5C1" "XK_Arabic_hamza"
+.tL "A" "5C2" "XK_Arabic_maddaonalef"
+.tL "A" "5C3" "XK_Arabic_hamzaonalef"
+.tL "A" "5C4" "XK_Arabic_hamzaonwaw"
+.tL "A" "5C5" "XK_Arabic_hamzaunderalef"
+.tL "A" "5C6" "XK_Arabic_hamzaonyeh"
+.tL "A" "5C7" "XK_Arabic_alef"
+.tL "A" "5C8" "XK_Arabic_beh"
+.tL "A" "5C9" "XK_Arabic_tehmarbuta"
+.tL "A" "5CA" "XK_Arabic_teh"
+.tL "A" "5CB" "XK_Arabic_theh"
+.tL "A" "5CC" "XK_Arabic_jeem"
+.tL "A" "5CD" "XK_Arabic_hah"
+.tL "A" "5CE" "XK_Arabic_khah"
+.tL "A" "5CF" "XK_Arabic_dal"
+.tL "A" "5D0" "XK_Arabic_thal"
+.tL "A" "5D1" "XK_Arabic_ra"
+.tL "A" "5D2" "XK_Arabic_zain"
+.tL "A" "5D3" "XK_Arabic_seen"
+.tL "A" "5D4" "XK_Arabic_sheen"
+.tL "A" "5D5" "XK_Arabic_sad"
+.tL "A" "5D6" "XK_Arabic_dad"
+.tL "A" "5D7" "XK_Arabic_tah"
+.tL "A" "5D8" "XK_Arabic_zah"
+.tL "A" "5D9" "XK_Arabic_ain"
+.tL "A" "5DA" "XK_Arabic_ghain"
+.tL "A" "5E0" "XK_Arabic_tatweel"
+.tL "A" "5E1" "XK_Arabic_feh"
+.tL "A" "5E2" "XK_Arabic_qaf"
+.tL "A" "5E3" "XK_Arabic_kaf"
+.tL "A" "5E4" "XK_Arabic_lam"
+.tL "A" "5E5" "XK_Arabic_meem"
+.tL "A" "5E6" "XK_Arabic_noon"
+.tL "A" "5E7" "XK_Arabic_ha"
+.tL "A" "5E7" "XK_Arabic_heh"
+.tL "A" "5E8" "XK_Arabic_waw"
+.tL "A" "5E9" "XK_Arabic_alefmaksura"
+.tL "A" "5EA" "XK_Arabic_yeh"
+.tL "A" "5EB" "XK_Arabic_fathatan"
+.tL "A" "5EC" "XK_Arabic_dammatan"
+.tL "A" "5ED" "XK_Arabic_kasratan"
+.tL "A" "5EE" "XK_Arabic_fatha"
+.tL "A" "5EF" "XK_Arabic_damma"
+.tL "A" "5F0" "XK_Arabic_kasra"
+.tL "A" "5F1" "XK_Arabic_shadda"
+.tL "A" "5F2" "XK_Arabic_sukun"
+.tL "A" "FF7E" "XK_Arabic_switch"
+>>STRATEGY
+For each KeySym in table with code A:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdA();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code C,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "C" "6A1" "XK_Serbian_dje"
+.tL "C" "6A2" "XK_Macedonia_gje"
+.tL "C" "6A3" "XK_Cyrillic_io"
+.tL "C" "6A4" "XK_Ukrainian_ie"
+.tL "C" "6A4" "XK_Ukranian_je"
+.tL "C" "6A5" "XK_Macedonia_dse"
+.tL "C" "6A6" "XK_Ukrainian_i"
+.tL "C" "6A6" "XK_Ukranian_i"
+.tL "C" "6A7" "XK_Ukrainian_yi"
+.tL "C" "6A7" "XK_Ukranian_yi"
+.tL "C" "6A8" "XK_Cyrillic_je"
+.tL "C" "6A8" "XK_Serbian_je"
+.tL "C" "6A9" "XK_Cyrillic_lje"
+.tL "C" "6A9" "XK_Serbian_lje"
+.tL "C" "6AA" "XK_Cyrillic_nje"
+.tL "C" "6AA" "XK_Serbian_nje"
+.tL "C" "6AB" "XK_Serbian_tshe"
+.tL "C" "6AC" "XK_Macedonia_kje"
+.tL "C" "6AE" "XK_Byelorussian_shortu"
+.tL "C" "6AF" "XK_Cyrillic_dzhe"
+.tL "C" "6AF" "XK_Serbian_dze"
+.tL "C" "6B0" "XK_numerosign"
+.tL "C" "6B1" "XK_Serbian_DJE"
+.tL "C" "6B2" "XK_Macedonia_GJE"
+.tL "C" "6B3" "XK_Cyrillic_IO"
+.tL "C" "6B4" "XK_Ukrainian_IE"
+.tL "C" "6B4" "XK_Ukranian_JE"
+.tL "C" "6B5" "XK_Macedonia_DSE"
+.tL "C" "6B6" "XK_Ukrainian_I"
+.tL "C" "6B6" "XK_Ukranian_I"
+.tL "C" "6B7" "XK_Ukrainian_YI"
+.tL "C" "6B7" "XK_Ukranian_YI"
+.tL "C" "6B8" "XK_Cyrillic_JE"
+.tL "C" "6B8" "XK_Serbian_JE"
+.tL "C" "6B9" "XK_Cyrillic_LJE"
+.tL "C" "6B9" "XK_Serbian_LJE"
+.tL "C" "6BA" "XK_Cyrillic_NJE"
+.tL "C" "6BA" "XK_Serbian_NJE"
+.tL "C" "6BB" "XK_Serbian_TSHE"
+.tL "C" "6BC" "XK_Macedonia_KJE"
+.tL "C" "6BE" "XK_Byelorussian_SHORTU"
+.tL "C" "6BF" "XK_Cyrillic_DZHE"
+.tL "C" "6BF" "XK_Serbian_DZE"
+.tL "C" "6C0" "XK_Cyrillic_yu"
+.tL "C" "6C1" "XK_Cyrillic_a"
+.tL "C" "6C2" "XK_Cyrillic_be"
+.tL "C" "6C3" "XK_Cyrillic_tse"
+.tL "C" "6C4" "XK_Cyrillic_de"
+.tL "C" "6C5" "XK_Cyrillic_ie"
+.tL "C" "6C6" "XK_Cyrillic_ef"
+.tL "C" "6C7" "XK_Cyrillic_ghe"
+.tL "C" "6C8" "XK_Cyrillic_ha"
+.tL "C" "6C9" "XK_Cyrillic_i"
+.tL "C" "6CA" "XK_Cyrillic_shorti"
+.tL "C" "6CB" "XK_Cyrillic_ka"
+.tL "C" "6CC" "XK_Cyrillic_el"
+.tL "C" "6CD" "XK_Cyrillic_em"
+.tL "C" "6CE" "XK_Cyrillic_en"
+.tL "C" "6CF" "XK_Cyrillic_o"
+.tL "C" "6D0" "XK_Cyrillic_pe"
+.tL "C" "6D1" "XK_Cyrillic_ya"
+.tL "C" "6D2" "XK_Cyrillic_er"
+.tL "C" "6D3" "XK_Cyrillic_es"
+.tL "C" "6D4" "XK_Cyrillic_te"
+.tL "C" "6D5" "XK_Cyrillic_u"
+.tL "C" "6D6" "XK_Cyrillic_zhe"
+.tL "C" "6D7" "XK_Cyrillic_ve"
+.tL "C" "6D8" "XK_Cyrillic_softsign"
+.tL "C" "6D9" "XK_Cyrillic_yeru"
+.tL "C" "6DA" "XK_Cyrillic_ze"
+.tL "C" "6DB" "XK_Cyrillic_sha"
+.tL "C" "6DC" "XK_Cyrillic_e"
+.tL "C" "6DD" "XK_Cyrillic_shcha"
+.tL "C" "6DE" "XK_Cyrillic_che"
+.tL "C" "6DF" "XK_Cyrillic_hardsign"
+.tL "C" "6E0" "XK_Cyrillic_YU"
+.tL "C" "6E1" "XK_Cyrillic_A"
+.tL "C" "6E2" "XK_Cyrillic_BE"
+.tL "C" "6E3" "XK_Cyrillic_TSE"
+.tL "C" "6E4" "XK_Cyrillic_DE"
+.tL "C" "6E5" "XK_Cyrillic_IE"
+.tL "C" "6E6" "XK_Cyrillic_EF"
+.tL "C" "6E7" "XK_Cyrillic_GHE"
+.tL "C" "6E8" "XK_Cyrillic_HA"
+.tL "C" "6E9" "XK_Cyrillic_I"
+.tL "C" "6EA" "XK_Cyrillic_SHORTI"
+.tL "C" "6EB" "XK_Cyrillic_KA"
+.tL "C" "6EC" "XK_Cyrillic_EL"
+.tL "C" "6ED" "XK_Cyrillic_EM"
+.tL "C" "6EE" "XK_Cyrillic_EN"
+.tL "C" "6EF" "XK_Cyrillic_O"
+.tL "C" "6F0" "XK_Cyrillic_PE"
+.tL "C" "6F1" "XK_Cyrillic_YA"
+.tL "C" "6F2" "XK_Cyrillic_ER"
+.tL "C" "6F3" "XK_Cyrillic_ES"
+.tL "C" "6F4" "XK_Cyrillic_TE"
+.tL "C" "6F5" "XK_Cyrillic_U"
+.tL "C" "6F6" "XK_Cyrillic_ZHE"
+.tL "C" "6F7" "XK_Cyrillic_VE"
+.tL "C" "6F8" "XK_Cyrillic_SOFTSIGN"
+.tL "C" "6F9" "XK_Cyrillic_YERU"
+.tL "C" "6FA" "XK_Cyrillic_ZE"
+.tL "C" "6FB" "XK_Cyrillic_SHA"
+.tL "C" "6FC" "XK_Cyrillic_E"
+.tL "C" "6FD" "XK_Cyrillic_SHCHA"
+.tL "C" "6FE" "XK_Cyrillic_CHE"
+.tL "C" "6FF" "XK_Cyrillic_HARDSIGN"
+>>STRATEGY
+For each KeySym in table with code C:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdC();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code G,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "G" "7A1" "XK_Greek_ALPHAaccent"
+.tL "G" "7A2" "XK_Greek_EPSILONaccent"
+.tL "G" "7A3" "XK_Greek_ETAaccent"
+.tL "G" "7A4" "XK_Greek_IOTAaccent"
+.tL "G" "7A5" "XK_Greek_IOTAdiaeresis"
+.tL "G" "7A7" "XK_Greek_OMICRONaccent"
+.tL "G" "7A8" "XK_Greek_UPSILONaccent"
+.tL "G" "7A9" "XK_Greek_UPSILONdieresis"
+.tL "G" "7AB" "XK_Greek_OMEGAaccent"
+.tL "G" "7AE" "XK_Greek_accentdieresis"
+.tL "G" "7AF" "XK_Greek_horizbar"
+.tL "G" "7B1" "XK_Greek_alphaaccent"
+.tL "G" "7B2" "XK_Greek_epsilonaccent"
+.tL "G" "7B3" "XK_Greek_etaaccent"
+.tL "G" "7B4" "XK_Greek_iotaaccent"
+.tL "G" "7B5" "XK_Greek_iotadieresis"
+.tL "G" "7B6" "XK_Greek_iotaaccentdieresis"
+.tL "G" "7B7" "XK_Greek_omicronaccent"
+.tL "G" "7B8" "XK_Greek_upsilonaccent"
+.tL "G" "7B9" "XK_Greek_upsilondieresis"
+.tL "G" "7BA" "XK_Greek_upsilonaccentdieresis"
+.tL "G" "7BB" "XK_Greek_omegaaccent"
+.tL "G" "7C1" "XK_Greek_ALPHA"
+.tL "G" "7C2" "XK_Greek_BETA"
+.tL "G" "7C3" "XK_Greek_GAMMA"
+.tL "G" "7C4" "XK_Greek_DELTA"
+.tL "G" "7C5" "XK_Greek_EPSILON"
+.tL "G" "7C6" "XK_Greek_ZETA"
+.tL "G" "7C7" "XK_Greek_ETA"
+.tL "G" "7C8" "XK_Greek_THETA"
+.tL "G" "7C9" "XK_Greek_IOTA"
+.tL "G" "7CA" "XK_Greek_KAPPA"
+.tL "G" "7CB" "XK_Greek_LAMBDA"
+.tL "G" "7CB" "XK_Greek_LAMDA"
+.tL "G" "7CC" "XK_Greek_MU"
+.tL "G" "7CD" "XK_Greek_NU"
+.tL "G" "7CE" "XK_Greek_XI"
+.tL "G" "7CF" "XK_Greek_OMICRON"
+.tL "G" "7D0" "XK_Greek_PI"
+.tL "G" "7D1" "XK_Greek_RHO"
+.tL "G" "7D2" "XK_Greek_SIGMA"
+.tL "G" "7D4" "XK_Greek_TAU"
+.tL "G" "7D5" "XK_Greek_UPSILON"
+.tL "G" "7D6" "XK_Greek_PHI"
+.tL "G" "7D7" "XK_Greek_CHI"
+.tL "G" "7D8" "XK_Greek_PSI"
+.tL "G" "7D9" "XK_Greek_OMEGA"
+.tL "G" "7E1" "XK_Greek_alpha"
+.tL "G" "7E2" "XK_Greek_beta"
+.tL "G" "7E3" "XK_Greek_gamma"
+.tL "G" "7E4" "XK_Greek_delta"
+.tL "G" "7E5" "XK_Greek_epsilon"
+.tL "G" "7E6" "XK_Greek_zeta"
+.tL "G" "7E7" "XK_Greek_eta"
+.tL "G" "7E8" "XK_Greek_theta"
+.tL "G" "7E9" "XK_Greek_iota"
+.tL "G" "7EA" "XK_Greek_kappa"
+.tL "G" "7EB" "XK_Greek_lambda"
+.tL "G" "7EB" "XK_Greek_lamda"
+.tL "G" "7EC" "XK_Greek_mu"
+.tL "G" "7ED" "XK_Greek_nu"
+.tL "G" "7EE" "XK_Greek_xi"
+.tL "G" "7EF" "XK_Greek_omicron"
+.tL "G" "7F0" "XK_Greek_pi"
+.tL "G" "7F1" "XK_Greek_rho"
+.tL "G" "7F2" "XK_Greek_sigma"
+.tL "G" "7F3" "XK_Greek_finalsmallsigma"
+.tL "G" "7F4" "XK_Greek_tau"
+.tL "G" "7F5" "XK_Greek_upsilon"
+.tL "G" "7F6" "XK_Greek_phi"
+.tL "G" "7F7" "XK_Greek_chi"
+.tL "G" "7F8" "XK_Greek_psi"
+.tL "G" "7F9" "XK_Greek_omega"
+.tL "G" "FF7E" "XK_Greek_switch"
+>>STRATEGY
+For each KeySym in table with code G:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdG();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code H,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "H" "CDF" "XK_hebrew_doublelowline"
+.tL "H" "CE0" "XK_hebrew_aleph"
+.tL "H" "CE1" "XK_hebrew_bet"
+.tL "H" "CE1" "XK_hebrew_beth"
+.tL "H" "CE2" "XK_hebrew_gimel"
+.tL "H" "CE2" "XK_hebrew_gimmel"
+.tL "H" "CE3" "XK_hebrew_dalet"
+.tL "H" "CE3" "XK_hebrew_daleth"
+.tL "H" "CE4" "XK_hebrew_he"
+.tL "H" "CE5" "XK_hebrew_waw"
+.tL "H" "CE6" "XK_hebrew_zain"
+.tL "H" "CE6" "XK_hebrew_zayin"
+.tL "H" "CE7" "XK_hebrew_chet"
+.tL "H" "CE7" "XK_hebrew_het"
+.tL "H" "CE8" "XK_hebrew_tet"
+.tL "H" "CE8" "XK_hebrew_teth"
+.tL "H" "CE9" "XK_hebrew_yod"
+.tL "H" "CEA" "XK_hebrew_finalkaph"
+.tL "H" "CEB" "XK_hebrew_kaph"
+.tL "H" "CEC" "XK_hebrew_lamed"
+.tL "H" "CED" "XK_hebrew_finalmem"
+.tL "H" "CEE" "XK_hebrew_mem"
+.tL "H" "CEF" "XK_hebrew_finalnun"
+.tL "H" "CF0" "XK_hebrew_nun"
+.tL "H" "CF1" "XK_hebrew_samech"
+.tL "H" "CF1" "XK_hebrew_samekh"
+.tL "H" "CF2" "XK_hebrew_ayin"
+.tL "H" "CF3" "XK_hebrew_finalpe"
+.tL "H" "CF4" "XK_hebrew_pe"
+.tL "H" "CF5" "XK_hebrew_finalzade"
+.tL "H" "CF5" "XK_hebrew_finalzadi"
+.tL "H" "CF6" "XK_hebrew_zade"
+.tL "H" "CF6" "XK_hebrew_zadi"
+.tL "H" "CF7" "XK_hebrew_qoph"
+.tL "H" "CF7" "XK_hebrew_kuf"
+.tL "H" "CF8" "XK_hebrew_resh"
+.tL "H" "CF9" "XK_hebrew_shin"
+.tL "H" "CFA" "XK_hebrew_taw"
+.tL "H" "CFA" "XK_hebrew_taf"
+.tL "H" "FF7E" "XK_Hebrew_switch"
+>>STRATEGY
+For each KeySym in table with code H:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdH();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code K,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "K" "47E" "XK_overline"
+.tL "K" "4A1" "XK_kana_fullstop"
+.tL "K" "4A2" "XK_kana_openingbracket"
+.tL "K" "4A3" "XK_kana_closingbracket"
+.tL "K" "4A4" "XK_kana_comma"
+.tL "K" "4A5" "XK_kana_conjunctive"
+.tL "K" "4A5" "XK_kana_middledot"
+.tL "K" "4A6" "XK_kana_WO"
+.tL "K" "4A7" "XK_kana_a"
+.tL "K" "4A8" "XK_kana_i"
+.tL "K" "4A9" "XK_kana_u"
+.tL "K" "4AA" "XK_kana_e"
+.tL "K" "4AB" "XK_kana_o"
+.tL "K" "4AC" "XK_kana_ya"
+.tL "K" "4AD" "XK_kana_yu"
+.tL "K" "4AE" "XK_kana_yo"
+.tL "K" "4AF" "XK_kana_tsu"
+.tL "K" "4AF" "XK_kana_tu"
+.tL "K" "4B0" "XK_prolongedsound"
+.tL "K" "4B1" "XK_kana_A"
+.tL "K" "4B2" "XK_kana_I"
+.tL "K" "4B3" "XK_kana_U"
+.tL "K" "4B4" "XK_kana_E"
+.tL "K" "4B5" "XK_kana_O"
+.tL "K" "4B6" "XK_kana_KA"
+.tL "K" "4B7" "XK_kana_KI"
+.tL "K" "4B8" "XK_kana_KU"
+.tL "K" "4B9" "XK_kana_KE"
+.tL "K" "4BA" "XK_kana_KO"
+.tL "K" "4BB" "XK_kana_SA"
+.tL "K" "4BC" "XK_kana_SHI"
+.tL "K" "4BD" "XK_kana_SU"
+.tL "K" "4BE" "XK_kana_SE"
+.tL "K" "4BF" "XK_kana_SO"
+.tL "K" "4C0" "XK_kana_TA"
+.tL "K" "4C1" "XK_kana_CHI"
+.tL "K" "4C1" "XK_kana_TI"
+.tL "K" "4C2" "XK_kana_TSU"
+.tL "K" "4C2" "XK_kana_TU"
+.tL "K" "4C3" "XK_kana_TE"
+.tL "K" "4C4" "XK_kana_TO"
+.tL "K" "4C5" "XK_kana_NA"
+.tL "K" "4C6" "XK_kana_NI"
+.tL "K" "4C7" "XK_kana_NU"
+.tL "K" "4C8" "XK_kana_NE"
+.tL "K" "4C9" "XK_kana_NO"
+.tL "K" "4CA" "XK_kana_HA"
+.tL "K" "4CB" "XK_kana_HI"
+.tL "K" "4CC" "XK_kana_FU"
+.tL "K" "4CC" "XK_kana_HU"
+.tL "K" "4CD" "XK_kana_HE"
+.tL "K" "4CE" "XK_kana_HO"
+.tL "K" "4CF" "XK_kana_MA"
+.tL "K" "4D0" "XK_kana_MI"
+.tL "K" "4D1" "XK_kana_MU"
+.tL "K" "4D2" "XK_kana_ME"
+.tL "K" "4D3" "XK_kana_MO"
+.tL "K" "4D4" "XK_kana_YA"
+.tL "K" "4D5" "XK_kana_YU"
+.tL "K" "4D6" "XK_kana_YO"
+.tL "K" "4D7" "XK_kana_RA"
+.tL "K" "4D8" "XK_kana_RI"
+.tL "K" "4D9" "XK_kana_RU"
+.tL "K" "4DA" "XK_kana_RE"
+.tL "K" "4DB" "XK_kana_RO"
+.tL "K" "4DC" "XK_kana_WA"
+.tL "K" "4DD" "XK_kana_N"
+.tL "K" "4DE" "XK_voicedsound"
+.tL "K" "4DF" "XK_semivoicedsound"
+.tL "K" "FF7E" "XK_kana_switch"
+>>STRATEGY
+For each KeySym in table with code K:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdK();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code L,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "L" "BA3" "XK_leftcaret"
+.tL "L" "BA6" "XK_rightcaret"
+.tL "L" "BA8" "XK_downcaret"
+.tL "L" "BA9" "XK_upcaret"
+.tL "L" "BC0" "XK_overbar"
+.tL "L" "BC2" "XK_downtack"
+.tL "L" "BC3" "XK_upshoe"
+.tL "L" "BC4" "XK_downstile"
+.tL "L" "BC6" "XK_underbar"
+.tL "L" "BCA" "XK_jot"
+.tL "L" "BCC" "XK_quad"
+.tL "L" "BCE" "XK_uptack"
+.tL "L" "BCF" "XK_circle"
+.tL "L" "BD3" "XK_upstile"
+.tL "L" "BD6" "XK_downshoe"
+.tL "L" "BD8" "XK_rightshoe"
+.tL "L" "BDA" "XK_leftshoe"
+.tL "L" "BDC" "XK_lefttack"
+.tL "L" "BFC" "XK_righttack"
+>>STRATEGY
+For each KeySym in table with code L:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdL();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code M,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "M" "FF08" "XK_BackSpace"
+.tL "M" "FF09" "XK_Tab"
+.tL "M" "FF0A" "XK_Linefeed"
+.tL "M" "FF0B" "XK_Clear"
+.tL "M" "FF0D" "XK_Return"
+.tL "M" "FF13" "XK_Pause"
+.tL "M" "FF14" "XK_Scroll_Lock"
+.tL "M" "FF1B" "XK_Escape"
+.tL "M" "FF20" "XK_Multi_key"
+.tL "M" "FF21" "XK_Kanji"
+.tL "M" "FF22" "XK_Muhenkan"
+.tL "M" "FF23" "XK_Henkan"
+.tL "M" "FF23" "XK_Henkan_Mode"
+.tL "M" "FF24" "XK_Romaji"
+.tL "M" "FF25" "XK_Hiragana"
+.tL "M" "FF26" "XK_Katakana"
+.tL "M" "FF27" "XK_Hiragana_Katakana"
+.tL "M" "FF28" "XK_Zenkaku"
+.tL "M" "FF29" "XK_Hankaku"
+.tL "M" "FF2A" "XK_Zenkaku_Hankaku"
+.tL "M" "FF2B" "XK_Touroku"
+.tL "M" "FF2C" "XK_Massyo"
+.tL "M" "FF2D" "XK_Kana_Lock"
+.tL "M" "FF2E" "XK_Kana_Shift"
+.tL "M" "FF2F" "XK_Eisu_Shift"
+.tL "M" "FF30" "XK_Eisu_toggle"
+.tL "M" "FF50" "XK_Home"
+.tL "M" "FF51" "XK_Left"
+.tL "M" "FF52" "XK_Up"
+.tL "M" "FF53" "XK_Right"
+.tL "M" "FF54" "XK_Down"
+.tL "M" "FF55" "XK_Prior"
+.tL "M" "FF56" "XK_Next"
+.tL "M" "FF57" "XK_End"
+.tL "M" "FF58" "XK_Begin"
+.tL "M" "FF60" "XK_Select"
+.tL "M" "FF61" "XK_Print"
+.tL "M" "FF62" "XK_Execute"
+.tL "M" "FF63" "XK_Insert"
+.tL "M" "FF65" "XK_Undo"
+.tL "M" "FF66" "XK_Redo"
+.tL "M" "FF67" "XK_Menu"
+.tL "M" "FF68" "XK_Find"
+.tL "M" "FF69" "XK_Cancel"
+.tL "M" "FF6A" "XK_Help"
+.tL "M" "FF6B" "XK_Break"
+.tL "M" "FF7E" "XK_Mode_switch"
+.tL "M" "FF7E" "XK_script_switch"
+.tL "M" "FF7F" "XK_Num_Lock"
+.tL "M" "FF80" "XK_KP_Space"
+.tL "M" "FF89" "XK_KP_Tab"
+.tL "M" "FF8D" "XK_KP_Enter"
+.tL "M" "FF91" "XK_KP_F1"
+.tL "M" "FF92" "XK_KP_F2"
+.tL "M" "FF93" "XK_KP_F3"
+.tL "M" "FF94" "XK_KP_F4"
+.tL "M" "FFAA" "XK_KP_Multiply"
+.tL "M" "FFAB" "XK_KP_Add"
+.tL "M" "FFAC" "XK_KP_Separator"
+.tL "M" "FFAD" "XK_KP_Subtract"
+.tL "M" "FFAE" "XK_KP_Decimal"
+.tL "M" "FFAF" "XK_KP_Divide"
+.tL "M" "FFB0" "XK_KP_0"
+.tL "M" "FFB1" "XK_KP_1"
+.tL "M" "FFB2" "XK_KP_2"
+.tL "M" "FFB3" "XK_KP_3"
+.tL "M" "FFB4" "XK_KP_4"
+.tL "M" "FFB5" "XK_KP_5"
+.tL "M" "FFB6" "XK_KP_6"
+.tL "M" "FFB7" "XK_KP_7"
+.tL "M" "FFB8" "XK_KP_8"
+.tL "M" "FFB9" "XK_KP_9"
+.tL "M" "FFBD" "XK_KP_Equal"
+.tL "M" "FFBE" "XK_F1"
+.tL "M" "FFBF" "XK_F2"
+.tL "M" "FFC0" "XK_F3"
+.tL "M" "FFC1" "XK_F4"
+.tL "M" "FFC2" "XK_F5"
+.tL "M" "FFC3" "XK_F6"
+.tL "M" "FFC4" "XK_F7"
+.tL "M" "FFC5" "XK_F8"
+.tL "M" "FFC6" "XK_F9"
+.tL "M" "FFC7" "XK_F10"
+.tL "M" "FFC8" "XK_F11"
+.tL "M" "FFC8" "XK_L1"
+.tL "M" "FFC9" "XK_F12"
+.tL "M" "FFC9" "XK_L2"
+.tL "M" "FFCA" "XK_F13"
+.tL "M" "FFCA" "XK_L3"
+.tL "M" "FFCB" "XK_F14"
+.tL "M" "FFCB" "XK_L4"
+.tL "M" "FFCC" "XK_F15"
+.tL "M" "FFCC" "XK_L5"
+.tL "M" "FFCD" "XK_F16"
+.tL "M" "FFCD" "XK_L6"
+.tL "M" "FFCE" "XK_F17"
+.tL "M" "FFCE" "XK_L7"
+.tL "M" "FFCF" "XK_F18"
+.tL "M" "FFCF" "XK_L8"
+.tL "M" "FFD0" "XK_F19"
+.tL "M" "FFD0" "XK_L9"
+.tL "M" "FFD1" "XK_F20"
+.tL "M" "FFD1" "XK_L10"
+.tL "M" "FFD2" "XK_F21"
+.tL "M" "FFD2" "XK_R1"
+.tL "M" "FFD3" "XK_F22"
+.tL "M" "FFD3" "XK_R2"
+.tL "M" "FFD4" "XK_F23"
+.tL "M" "FFD4" "XK_R3"
+.tL "M" "FFD5" "XK_F24"
+.tL "M" "FFD5" "XK_R4"
+.tL "M" "FFD6" "XK_F25"
+.tL "M" "FFD6" "XK_R5"
+.tL "M" "FFD7" "XK_F26"
+.tL "M" "FFD7" "XK_R6"
+.tL "M" "FFD8" "XK_F27"
+.tL "M" "FFD8" "XK_R7"
+.tL "M" "FFD9" "XK_F28"
+.tL "M" "FFD9" "XK_R8"
+.tL "M" "FFDA" "XK_F29"
+.tL "M" "FFDA" "XK_R9"
+.tL "M" "FFDB" "XK_F30"
+.tL "M" "FFDB" "XK_R10"
+.tL "M" "FFDC" "XK_F31"
+.tL "M" "FFDC" "XK_R11"
+.tL "M" "FFDD" "XK_F32"
+.tL "M" "FFDD" "XK_R12"
+.tL "M" "FFDE" "XK_F33"
+.tL "M" "FFDE" "XK_R13"
+.tL "M" "FFDF" "XK_F34"
+.tL "M" "FFDF" "XK_R14"
+.tL "M" "FFE0" "XK_F35"
+.tL "M" "FFE0" "XK_R15"
+.tL "M" "FFE1" "XK_Shift_L"
+.tL "M" "FFE2" "XK_Shift_R"
+.tL "M" "FFE3" "XK_Control_L"
+.tL "M" "FFE4" "XK_Control_R"
+.tL "M" "FFE5" "XK_Caps_Lock"
+.tL "M" "FFE6" "XK_Shift_Lock"
+.tL "M" "FFE7" "XK_Meta_L"
+.tL "M" "FFE8" "XK_Meta_R"
+.tL "M" "FFE9" "XK_Alt_L"
+.tL "M" "FFEA" "XK_Alt_R"
+.tL "M" "FFEB" "XK_Super_L"
+.tL "M" "FFEC" "XK_Super_R"
+.tL "M" "FFED" "XK_Hyper_L"
+.tL "M" "FFEE" "XK_Hyper_R"
+.tL "M" "FFFF" "XK_Delete"
+>>STRATEGY
+For each KeySym in table with code M:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdM();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code P,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "P" "AA1" "XK_emspace"
+.tL "P" "AA2" "XK_enspace"
+.tL "P" "AA3" "XK_em3space"
+.tL "P" "AA4" "XK_em4space"
+.tL "P" "AA5" "XK_digitspace"
+.tL "P" "AA6" "XK_punctspace"
+.tL "P" "AA7" "XK_thinspace"
+.tL "P" "AA8" "XK_hairspace"
+.tL "P" "AA9" "XK_emdash"
+.tL "P" "AAA" "XK_endash"
+.tL "P" "AAC" "XK_signifblank"
+.tL "P" "AAE" "XK_ellipsis"
+.tL "P" "AAF" "XK_doubbaselinedot"
+.tL "P" "AB0" "XK_onethird"
+.tL "P" "AB1" "XK_twothirds"
+.tL "P" "AB2" "XK_onefifth"
+.tL "P" "AB3" "XK_twofifths"
+.tL "P" "AB4" "XK_threefifths"
+.tL "P" "AB5" "XK_fourfifths"
+.tL "P" "AB6" "XK_onesixth"
+.tL "P" "AB7" "XK_fivesixths"
+.tL "P" "AB8" "XK_careof"
+.tL "P" "ABB" "XK_figdash"
+.tL "P" "ABC" "XK_leftanglebracket"
+.tL "P" "ABD" "XK_decimalpoint"
+.tL "P" "ABE" "XK_rightanglebracket"
+.tL "P" "ABF" "XK_marker"
+.tL "P" "AC3" "XK_oneeighth"
+.tL "P" "AC4" "XK_threeeighths"
+.tL "P" "AC5" "XK_fiveeighths"
+.tL "P" "AC6" "XK_seveneighths"
+.tL "P" "AC9" "XK_trademark"
+.tL "P" "ACA" "XK_signaturemark"
+.tL "P" "ACB" "XK_trademarkincircle"
+.tL "P" "ACC" "XK_leftopentriangle"
+.tL "P" "ACD" "XK_rightopentriangle"
+.tL "P" "ACE" "XK_emopencircle"
+.tL "P" "ACF" "XK_emopenrectangle"
+.tL "P" "AD0" "XK_leftsinglequotemark"
+.tL "P" "AD1" "XK_rightsinglequotemark"
+.tL "P" "AD2" "XK_leftdoublequotemark"
+.tL "P" "AD3" "XK_rightdoublequotemark"
+.tL "P" "AD4" "XK_prescription"
+.tL "P" "AD6" "XK_minutes"
+.tL "P" "AD7" "XK_seconds"
+.tL "P" "AD9" "XK_latincross"
+.tL "P" "ADA" "XK_hexagram"
+.tL "P" "ADB" "XK_filledrectbullet"
+.tL "P" "ADC" "XK_filledlefttribullet"
+.tL "P" "ADD" "XK_filledrighttribullet"
+.tL "P" "ADE" "XK_emfilledcircle"
+.tL "P" "ADF" "XK_emfilledrect"
+.tL "P" "AE0" "XK_enopencircbullet"
+.tL "P" "AE1" "XK_enopensquarebullet"
+.tL "P" "AE2" "XK_openrectbullet"
+.tL "P" "AE3" "XK_opentribulletup"
+.tL "P" "AE4" "XK_opentribulletdown"
+.tL "P" "AE5" "XK_openstar"
+.tL "P" "AE6" "XK_enfilledcircbullet"
+.tL "P" "AE7" "XK_enfilledsqbullet"
+.tL "P" "AE8" "XK_filledtribulletup"
+.tL "P" "AE9" "XK_filledtribulletdown"
+.tL "P" "AEA" "XK_leftpointer"
+.tL "P" "AEB" "XK_rightpointer"
+.tL "P" "AEC" "XK_club"
+.tL "P" "AED" "XK_diamond"
+.tL "P" "AEE" "XK_heart"
+.tL "P" "AF0" "XK_maltesecross"
+.tL "P" "AF1" "XK_dagger"
+.tL "P" "AF2" "XK_doubledagger"
+.tL "P" "AF3" "XK_checkmark"
+.tL "P" "AF4" "XK_ballotcross"
+.tL "P" "AF5" "XK_musicalsharp"
+.tL "P" "AF6" "XK_musicalflat"
+.tL "P" "AF7" "XK_malesymbol"
+.tL "P" "AF8" "XK_femalesymbol"
+.tL "P" "AF9" "XK_telephone"
+.tL "P" "AFA" "XK_telephonerecorder"
+.tL "P" "AFB" "XK_phonographcopyright"
+.tL "P" "AFC" "XK_caret"
+.tL "P" "AFD" "XK_singlelowquotemark"
+.tL "P" "AFE" "XK_doublelowquotemark"
+.tL "P" "AFF" "XK_cursor"
+>>STRATEGY
+For each KeySym in table with code P:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdP();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code S,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "S" "9DF" "XK_blank"
+.tL "S" "9E0" "XK_soliddiamond"
+.tL "S" "9E1" "XK_checkerboard"
+.tL "S" "9E2" "XK_ht"
+.tL "S" "9E3" "XK_ff"
+.tL "S" "9E4" "XK_cr"
+.tL "S" "9E5" "XK_lf"
+.tL "S" "9E8" "XK_nl"
+.tL "S" "9E9" "XK_vt"
+.tL "S" "9EA" "XK_lowrightcorner"
+.tL "S" "9EB" "XK_uprightcorner"
+.tL "S" "9EC" "XK_upleftcorner"
+.tL "S" "9ED" "XK_lowleftcorner"
+.tL "S" "9EE" "XK_crossinglines"
+.tL "S" "9EF" "XK_horizlinescan1"
+.tL "S" "9F0" "XK_horizlinescan3"
+.tL "S" "9F1" "XK_horizlinescan5"
+.tL "S" "9F2" "XK_horizlinescan7"
+.tL "S" "9F3" "XK_horizlinescan9"
+.tL "S" "9F4" "XK_leftt"
+.tL "S" "9F5" "XK_rightt"
+.tL "S" "9F6" "XK_bott"
+.tL "S" "9F7" "XK_topt"
+.tL "S" "9F8" "XK_vertbar"
+>>STRATEGY
+For each KeySym in table with code S:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdS();
+
+>>ASSERTION Good A
+When the
+.A keysym
+argument is a
+.S KeySym
+in the table which is defined and has code T,
+then a call to xname returns the
+.S KeyCode
+defined for that
+.S KeySym .
+.tL "Code" "Value" "Name"
+.tL "T" "8A1" "XK_leftradical"
+.tL "T" "8A2" "XK_topleftradical"
+.tL "T" "8A3" "XK_horizconnector"
+.tL "T" "8A4" "XK_topintegral"
+.tL "T" "8A5" "XK_botintegral"
+.tL "T" "8A6" "XK_vertconnector"
+.tL "T" "8A7" "XK_topleftsqbracket"
+.tL "T" "8A8" "XK_botleftsqbracket"
+.tL "T" "8A9" "XK_toprightsqbracket"
+.tL "T" "8AA" "XK_botrightsqbracket"
+.tL "T" "8AB" "XK_topleftparens"
+.tL "T" "8AC" "XK_botleftparens"
+.tL "T" "8AD" "XK_toprightparens"
+.tL "T" "8AE" "XK_botrightparens"
+.tL "T" "8AF" "XK_leftmiddlecurlybrace"
+.tL "T" "8B0" "XK_rightmiddlecurlybrace"
+.tL "T" "8B1" "XK_topleftsummation"
+.tL "T" "8B2" "XK_botleftsummation"
+.tL "T" "8B3" "XK_topvertsummationconnector"
+.tL "T" "8B4" "XK_botvertsummationconnector"
+.tL "T" "8B5" "XK_toprightsummation"
+.tL "T" "8B6" "XK_botrightsummation"
+.tL "T" "8B7" "XK_rightmiddlesummation"
+.tL "T" "8BC" "XK_lessthanequal"
+.tL "T" "8BD" "XK_notequal"
+.tL "T" "8BE" "XK_greaterthanequal"
+.tL "T" "8BF" "XK_integral"
+.tL "T" "8C0" "XK_therefore"
+.tL "T" "8C1" "XK_variation"
+.tL "T" "8C2" "XK_infinity"
+.tL "T" "8C5" "XK_nabla"
+.tL "T" "8C8" "XK_approximate"
+.tL "T" "8C9" "XK_similarequal"
+.tL "T" "8CD" "XK_ifonlyif"
+.tL "T" "8CE" "XK_implies"
+.tL "T" "8CF" "XK_identical"
+.tL "T" "8D6" "XK_radical"
+.tL "T" "8DA" "XK_includedin"
+.tL "T" "8DB" "XK_includes"
+.tL "T" "8DC" "XK_intersection"
+.tL "T" "8DD" "XK_union"
+.tL "T" "8DE" "XK_logicaland"
+.tL "T" "8DF" "XK_logicalor"
+.tL "T" "8EF" "XK_partialderivative"
+.tL "T" "8F6" "XK_function"
+.tL "T" "8FB" "XK_leftarrow"
+.tL "T" "8FC" "XK_uparrow"
+.tL "T" "8FD" "XK_rightarrow"
+.tL "T" "8FE" "XK_downarrow"
+>>STRATEGY
+For each KeySym in table with code T:
+ Call XKeysymToKeycode to obtain the KeyCode defined for that KeySym.
+ Call XKeycodeToKeysym to obtain each KeySym for that KeyCode.
+ Verify that one of the KeySyms returned is the original KeySym.
+>>CODE
+
+ kysymtcdT();
+