The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Keysyms.pm semi-automatically derived from:
# $XConsortium: keysymdef.h,v 1.21 94/08/28 16:17:06 rws Exp $ 
#
#**********************************************************
#Copyright (c) 1987, 1994  X Consortium
#
#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 X CONSORTIUM 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.
#
#Except as contained in this notice, the name of the X Consortium shall
#not be used in advertising or otherwise to promote the sale, use or
#other dealings in this Software without prior written authorization
#from the X Consortium.
#
#
#Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts
#
#                        All Rights Reserved
#
#Permission to use, copy, modify, and distribute this software and its
#documentation for any purpose and without fee is hereby granted,
#provided that the above copyright notice appear in all copies and that
#both that copyright notice and this permission notice appear in
#supporting documentation, and that the name of Digital not be
#used in advertising or publicity pertaining to distribution of the
#software without specific, written prior permission.
#
#DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
#ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
#DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
#ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
#WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
#ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
#SOFTWARE.
#
#*****************************************************************

package X11::Keysyms;

use Carp;
$VERSION = 0.01;

sub import {
    my($pkg, $var, @x) = @_;
    my($into) = caller();

    croak "Need the name of a variable to import into" unless $var;
    $var =~ s/^%//;

    my(%KL);
    if (@x) {
	@KL{@x} = (1) x @x;
    } else {
	@KL{'MISCELLANY', 'XKB_KEYS', 'LATIN1', 'LATIN2', 'LATIN3', 'LATIN4',
	    'GREEK'} = (1) x 7;
    }

    local(*Keysyms) = *{"${into}::$var"};
#   print STDERR "Exporting into ${into}::$var\n";

    $Keysyms{"VoidSymbol"} = 0xFFFFFF;	# void symbol 
    
#ifdef XK_MISCELLANY
#
# * TTY Functions, cleverly chosen to map to ascii, for convenience of
# * programming, but could have been arbitrary (at the cost of lookup
# * tables in client code.
    
    if ($KL{'MISCELLANY'}) {
	$Keysyms{"BackSpace"} = 0xFF08;	# back space, back char 
	$Keysyms{"Tab"} = 0xFF09;
	$Keysyms{"Linefeed"} = 0xFF0A;	# Linefeed, LF 
	$Keysyms{"Clear"} = 0xFF0B;
	$Keysyms{"Return"} = 0xFF0D;	# Return, enter 
	$Keysyms{"Pause"} = 0xFF13;	# Pause, hold 
	$Keysyms{"Scroll_Lock"} = 0xFF14;
	$Keysyms{"Sys_Req"} = 0xFF15;
	$Keysyms{"Escape"} = 0xFF1B;
	$Keysyms{"Delete"} = 0xFFFF;	# Delete, rubout 

# International & multi-key character composition 

	$Keysyms{"Multi_key"} = 0xFF20;  # Multi-key character compose 

# Japanese keyboard support 

	$Keysyms{"Kanji"} = 0xFF21;	# Kanji, Kanji convert 
	$Keysyms{"Muhenkan"} = 0xFF22;  # Cancel Conversion 
	$Keysyms{"Henkan_Mode"} = 0xFF23;  # Start/Stop Conversion 
	$Keysyms{"Henkan"} = 0xFF23;  # Alias for Henkan_Mode 
	$Keysyms{"Romaji"} = 0xFF24;  # to Romaji 
	$Keysyms{"Hiragana"} = 0xFF25;  # to Hiragana 
	$Keysyms{"Katakana"} = 0xFF26;  # to Katakana 
	$Keysyms{"Hiragana_Katakana"} = 0xFF27;  # Hiragana/Katakana toggle 
	$Keysyms{"Zenkaku"} = 0xFF28;  # to Zenkaku 
	$Keysyms{"Hankaku"} = 0xFF29;  # to Hankaku 
	$Keysyms{"Zenkaku_Hankaku"} = 0xFF2A;  # Zenkaku/Hankaku toggle 
	$Keysyms{"Touroku"} = 0xFF2B;  # Add to Dictionary 
	$Keysyms{"Massyo"} = 0xFF2C;  # Delete from Dictionary 
	$Keysyms{"Kana_Lock"} = 0xFF2D;  # Kana Lock 
	$Keysyms{"Kana_Shift"} = 0xFF2E;  # Kana Shift 
	$Keysyms{"Eisu_Shift"} = 0xFF2F;  # Alphanumeric Shift 
	$Keysyms{"Eisu_toggle"} = 0xFF30;  # Alphanumeric toggle 

# 0xFF31 thru 0xFF3F are under XK_KOREAN 

# Cursor control & motion 

	$Keysyms{"Home"} = 0xFF50;
	$Keysyms{"Left"} = 0xFF51;	# Move left, left arrow 
	$Keysyms{"Up"} = 0xFF52;	# Move up, up arrow 
	$Keysyms{"Right"} = 0xFF53;	# Move right, right arrow 
	$Keysyms{"Down"} = 0xFF54;	# Move down, down arrow 
	$Keysyms{"Prior"} = 0xFF55;	# Prior, previous 
	$Keysyms{"Page_Up"} = 0xFF55;
	$Keysyms{"Next"} = 0xFF56;	# Next 
	$Keysyms{"Page_Down"} = 0xFF56;
	$Keysyms{"End"} = 0xFF57;	# EOL 
	$Keysyms{"Begin"} = 0xFF58;	# BOL 


# Misc Functions 

	$Keysyms{"Select"} = 0xFF60;	# Select, mark 
	$Keysyms{"Print"} = 0xFF61;
	$Keysyms{"Execute"} = 0xFF62;	# Execute, run, do 
	$Keysyms{"Insert"} = 0xFF63;	# Insert, insert here 
	$Keysyms{"Undo"} = 0xFF65;	# Undo, oops 
	$Keysyms{"Redo"} = 0xFF66;	# redo, again 
	$Keysyms{"Menu"} = 0xFF67;
	$Keysyms{"Find"} = 0xFF68;	# Find, search 
	$Keysyms{"Cancel"} = 0xFF69;	# Cancel, stop, abort, exit 
	$Keysyms{"Help"} = 0xFF6A;	# Help 
	$Keysyms{"Break"} = 0xFF6B;
	$Keysyms{"Mode_switch"} = 0xFF7E;	# Character set switch 
	$Keysyms{"script_switch"} = 0xFF7E;  # Alias for mode_switch 
	$Keysyms{"Num_Lock"} = 0xFF7F;

# Keypad Functions, keypad numbers cleverly chosen to map to ascii 

	$Keysyms{"KP_Space"} = 0xFF80;	# space 
	$Keysyms{"KP_Tab"} = 0xFF89;
	$Keysyms{"KP_Enter"} = 0xFF8D;	# enter 
	$Keysyms{"KP_F1"} = 0xFF91;	# PF1, KP_A, ... 
	$Keysyms{"KP_F2"} = 0xFF92;
	$Keysyms{"KP_F3"} = 0xFF93;
	$Keysyms{"KP_F4"} = 0xFF94;
	$Keysyms{"KP_Home"} = 0xFF95;
	$Keysyms{"KP_Left"} = 0xFF96;
	$Keysyms{"KP_Up"} = 0xFF97;
	$Keysyms{"KP_Right"} = 0xFF98;
	$Keysyms{"KP_Down"} = 0xFF99;
	$Keysyms{"KP_Prior"} = 0xFF9A;
	$Keysyms{"KP_Page_Up"} = 0xFF9A;
	$Keysyms{"KP_Next"} = 0xFF9B;
	$Keysyms{"KP_Page_Down"} = 0xFF9B;
	$Keysyms{"KP_End"} = 0xFF9C;
	$Keysyms{"KP_Begin"} = 0xFF9D;
	$Keysyms{"KP_Insert"} = 0xFF9E;
	$Keysyms{"KP_Delete"} = 0xFF9F;
	$Keysyms{"KP_Equal"} = 0xFFBD;	# equals 
	$Keysyms{"KP_Multiply"} = 0xFFAA;
	$Keysyms{"KP_Add"} = 0xFFAB;
	$Keysyms{"KP_Separator"} = 0xFFAC;	# separator, often comma 
	$Keysyms{"KP_Subtract"} = 0xFFAD;
	$Keysyms{"KP_Decimal"} = 0xFFAE;
	$Keysyms{"KP_Divide"} = 0xFFAF;

	$Keysyms{"KP_0"} = 0xFFB0;
	$Keysyms{"KP_1"} = 0xFFB1;
	$Keysyms{"KP_2"} = 0xFFB2;
	$Keysyms{"KP_3"} = 0xFFB3;
	$Keysyms{"KP_4"} = 0xFFB4;
	$Keysyms{"KP_5"} = 0xFFB5;
	$Keysyms{"KP_6"} = 0xFFB6;
	$Keysyms{"KP_7"} = 0xFFB7;
	$Keysyms{"KP_8"} = 0xFFB8;
	$Keysyms{"KP_9"} = 0xFFB9;

#
# * Auxilliary Functions; note the duplicate definitions for left and right
# * function keys;  Sun keyboards and a few other manufactures have such
# * function key groups on the left and/or right sides of the keyboard.
# * We've not found a keyboard with more than 35 function keys total.
	
	$Keysyms{"F1"} = 0xFFBE;
	$Keysyms{"F2"} = 0xFFBF;
	$Keysyms{"F3"} = 0xFFC0;
	$Keysyms{"F4"} = 0xFFC1;
	$Keysyms{"F5"} = 0xFFC2;
	$Keysyms{"F6"} = 0xFFC3;
	$Keysyms{"F7"} = 0xFFC4;
	$Keysyms{"F8"} = 0xFFC5;
	$Keysyms{"F9"} = 0xFFC6;
	$Keysyms{"F10"} = 0xFFC7;
	$Keysyms{"F11"} = 0xFFC8;
	$Keysyms{"L1"} = 0xFFC8;
	$Keysyms{"F12"} = 0xFFC9;
	$Keysyms{"L2"} = 0xFFC9;
	$Keysyms{"F13"} = 0xFFCA;
	$Keysyms{"L3"} = 0xFFCA;
	$Keysyms{"F14"} = 0xFFCB;
	$Keysyms{"L4"} = 0xFFCB;
	$Keysyms{"F15"} = 0xFFCC;
	$Keysyms{"L5"} = 0xFFCC;
	$Keysyms{"F16"} = 0xFFCD;
	$Keysyms{"L6"} = 0xFFCD;
	$Keysyms{"F17"} = 0xFFCE;
	$Keysyms{"L7"} = 0xFFCE;
	$Keysyms{"F18"} = 0xFFCF;
	$Keysyms{"L8"} = 0xFFCF;
	$Keysyms{"F19"} = 0xFFD0;
	$Keysyms{"L9"} = 0xFFD0;
	$Keysyms{"F20"} = 0xFFD1;
	$Keysyms{"L10"} = 0xFFD1;
	$Keysyms{"F21"} = 0xFFD2; 
	$Keysyms{"R1"} = 0xFFD2;
	$Keysyms{"F22"} = 0xFFD3;
	$Keysyms{"R2"} = 0xFFD3;
	$Keysyms{"F23"} = 0xFFD4;
	$Keysyms{"R3"} = 0xFFD4;
	$Keysyms{"F24"} = 0xFFD5;
	$Keysyms{"R4"} = 0xFFD5; 
	$Keysyms{"F25"} = 0xFFD6;
	$Keysyms{"R5"} = 0xFFD6;
	$Keysyms{"F26"} = 0xFFD7;
	$Keysyms{"R6"} = 0xFFD7;
	$Keysyms{"F27"} = 0xFFD8;
	$Keysyms{"R7"} = 0xFFD8;
	$Keysyms{"F28"} = 0xFFD9;
	$Keysyms{"R8"} = 0xFFD9;
	$Keysyms{"F29"} = 0xFFDA;
	$Keysyms{"R9"} = 0xFFDA;
	$Keysyms{"F30"} = 0xFFDB;
	$Keysyms{"R10"} = 0xFFDB;
	$Keysyms{"F31"} = 0xFFDC;
	$Keysyms{"R11"} = 0xFFDC;
	$Keysyms{"F32"} = 0xFFDD;
	$Keysyms{"R12"} = 0xFFDD;
	$Keysyms{"F33"} = 0xFFDE;
	$Keysyms{"R13"} = 0xFFDE;
	$Keysyms{"F34"} = 0xFFDF;
	$Keysyms{"R14"} = 0xFFDF;
	$Keysyms{"F35"} = 0xFFE0;
	$Keysyms{"R15"} = 0xFFE0;

# Modifiers 

	$Keysyms{"Shift_L"} = 0xFFE1;	# Left shift 
	$Keysyms{"Shift_R"} = 0xFFE2;	# Right shift 
	$Keysyms{"Control_L"} = 0xFFE3;	# Left control 
	$Keysyms{"Control_R"} = 0xFFE4;	# Right control 
	$Keysyms{"Caps_Lock"} = 0xFFE5;	# Caps lock 
	$Keysyms{"Shift_Lock"} = 0xFFE6;	# Shift lock 
	
	$Keysyms{"Meta_L"} = 0xFFE7;	# Left meta 
	$Keysyms{"Meta_R"} = 0xFFE8;	# Right meta 
	$Keysyms{"Alt_L"} = 0xFFE9;	# Left alt 
	$Keysyms{"Alt_R"} = 0xFFEA;	# Right alt 
	$Keysyms{"Super_L"} = 0xFFEB;	# Left super 
	$Keysyms{"Super_R"} = 0xFFEC;	# Right super 
	$Keysyms{"Hyper_L"} = 0xFFED;	# Left hyper 
	$Keysyms{"Hyper_R"} = 0xFFEE;	# Right hyper 
    }
#endif # XK_MISCELLANY 

# 
# * ISO 9995 Function and Modifier Keys
# * Byte 3 = 0xFE
    

#ifdef XK_XKB_KEYS
    if ($KL{'XKB_KEYS'}) {
	$Keysyms{"ISO_Lock"} = 0xFE01;
	$Keysyms{"ISO_Level2_Latch"} = 0xFE02;
	$Keysyms{"ISO_Level3_Shift"} = 0xFE03;
	$Keysyms{"ISO_Level3_Latch"} = 0xFE04;
	$Keysyms{"ISO_Level3_Lock"} = 0xFE05;
	$Keysyms{"ISO_Group_Shift"} = 0xFF7E;	# Alias for mode_switch 
	$Keysyms{"ISO_Group_Latch"} = 0xFE06;
	$Keysyms{"ISO_Group_Lock"} = 0xFE07;
	$Keysyms{"ISO_Next_Group"} = 0xFE08;
	$Keysyms{"ISO_Next_Group_Lock"} = 0xFE09;
	$Keysyms{"ISO_Prev_Group"} = 0xFE0A;
	$Keysyms{"ISO_Prev_Group_Lock"} = 0xFE0B;
	$Keysyms{"ISO_First_Group"} = 0xFE0C;
	$Keysyms{"ISO_First_Group_Lock"} = 0xFE0D;
	$Keysyms{"ISO_Last_Group"} = 0xFE0E;
	$Keysyms{"ISO_Last_Group_Lock"} = 0xFE0F;

	$Keysyms{"ISO_Left_Tab"} = 0xFE20;
	$Keysyms{"ISO_Move_Line_Up"} = 0xFE21;
	$Keysyms{"ISO_Move_Line_Down"} = 0xFE22;
	$Keysyms{"ISO_Partial_Line_Up"} = 0xFE23;
	$Keysyms{"ISO_Partial_Line_Down"} = 0xFE24;
	$Keysyms{"ISO_Partial_Space_Left"} = 0xFE25;
	$Keysyms{"ISO_Partial_Space_Right"} = 0xFE26;
	$Keysyms{"ISO_Set_Margin_Left"} = 0xFE27;
	$Keysyms{"ISO_Set_Margin_Right"} = 0xFE28;
	$Keysyms{"ISO_Release_Margin_Left"} = 0xFE29;
	$Keysyms{"ISO_Release_Margin_Right"} = 0xFE2A;
	$Keysyms{"ISO_Release_Both_Margins"} = 0xFE2B;
	$Keysyms{"ISO_Fast_Cursor_Left"} = 0xFE2C;
	$Keysyms{"ISO_Fast_Cursor_Right"} = 0xFE2D;
	$Keysyms{"ISO_Fast_Cursor_Up"} = 0xFE2E;
	$Keysyms{"ISO_Fast_Cursor_Down"} = 0xFE2F;
	$Keysyms{"ISO_Continuous_Underline"} = 0xFE30;
	$Keysyms{"ISO_Discontinuous_Underline"} = 0xFE31;
	$Keysyms{"ISO_Emphasize"} = 0xFE32;
	$Keysyms{"ISO_Center_Object"} = 0xFE33;
	$Keysyms{"ISO_Enter"} = 0xFE34;

	$Keysyms{"dead_grave"} = 0xFE50;
	$Keysyms{"dead_acute"} = 0xFE51;
	$Keysyms{"dead_circumflex"} = 0xFE52;
	$Keysyms{"dead_tilde"} = 0xFE53;
	$Keysyms{"dead_macron"} = 0xFE54;
	$Keysyms{"dead_breve"} = 0xFE55;
	$Keysyms{"dead_abovedot"} = 0xFE56;
	$Keysyms{"dead_diaeresis"} = 0xFE57;
	$Keysyms{"dead_abovering"} = 0xFE58;
	$Keysyms{"dead_doubleacute"} = 0xFE59;
	$Keysyms{"dead_caron"} = 0xFE5A;
	$Keysyms{"dead_cedilla"} = 0xFE5B;
	$Keysyms{"dead_ogonek"} = 0xFE5C;
	$Keysyms{"dead_iota"} = 0xFE5D;
	$Keysyms{"dead_voiced_sound"} = 0xFE5E;
	$Keysyms{"dead_semivoiced_sound"} = 0xFE5F;

	$Keysyms{"First_Virtual_Screen"} = 0xFED0;
	$Keysyms{"Prev_Virtual_Screen"} = 0xFED1;
	$Keysyms{"Next_Virtual_Screen"} = 0xFED2;
	$Keysyms{"Last_Virtual_Screen"} = 0xFED4;
	$Keysyms{"Terminate_Server"} = 0xFED5;

	$Keysyms{"Pointer_Left"} = 0xFEE0;
	$Keysyms{"Pointer_Right"} = 0xFEE1;
	$Keysyms{"Pointer_Up"} = 0xFEE2;
	$Keysyms{"Pointer_Down"} = 0xFEE3;
	$Keysyms{"Pointer_UpLeft"} = 0xFEE4;
	$Keysyms{"Pointer_UpRight"} = 0xFEE5;
	$Keysyms{"Pointer_DownLeft"} = 0xFEE6;
	$Keysyms{"Pointer_DownRight"} = 0xFEE7;
	$Keysyms{"Pointer_Button_Dflt"} = 0xFEE8;
	$Keysyms{"Pointer_Button1"} = 0xFEE9;
	$Keysyms{"Pointer_Button2"} = 0xFEEA;
	$Keysyms{"Pointer_Button3"} = 0xFEEB;
	$Keysyms{"Pointer_Button4"} = 0xFEEC;
	$Keysyms{"Pointer_Button5"} = 0xFEED;
	$Keysyms{"Pointer_DblClick_Dflt"} = 0xFEEE;
	$Keysyms{"Pointer_DblClick1"} = 0xFEEF;
	$Keysyms{"Pointer_DblClick2"} = 0xFEF0;
	$Keysyms{"Pointer_DblClick3"} = 0xFEF1;
	$Keysyms{"Pointer_DblClick4"} = 0xFEF2;
	$Keysyms{"Pointer_DblClick5"} = 0xFEF3;
	$Keysyms{"Pointer_Drag_Dflt"} = 0xFEF4;
	$Keysyms{"Pointer_Drag1"} = 0xFEF5;
	$Keysyms{"Pointer_Drag2"} = 0xFEF6;
	$Keysyms{"Pointer_Drag3"} = 0xFEF7;
	$Keysyms{"Pointer_Drag4"} = 0xFEF8;

	$Keysyms{"Pointer_EnableKeys"} = 0xFEF9;
	$Keysyms{"Pointer_Accelerate"} = 0xFEFA;
	$Keysyms{"Pointer_DfltBtnNext"} = 0xFEFB;
	$Keysyms{"Pointer_DfltBtnPrev"} = 0xFEFC;
    }
#endif

#
# * 3270 Terminal Keys
# * Byte 3 = 0xFD
    

#ifdef XK_3270
    if ($KL{'3270'}) {
	$Keysyms{"3270_Duplicate"} = 0xFD01;
	$Keysyms{"3270_FieldMark"} = 0xFD02;
	$Keysyms{"3270_Right2"} = 0xFD03;
	$Keysyms{"3270_Left2"} = 0xFD04;
	$Keysyms{"3270_BackTab"} = 0xFD05;
	$Keysyms{"3270_EraseEOF"} = 0xFD06;
	$Keysyms{"3270_EraseInput"} = 0xFD07;
	$Keysyms{"3270_Reset"} = 0xFD08;
	$Keysyms{"3270_Quit"} = 0xFD09;
	$Keysyms{"3270_PA1"} = 0xFD0A;
	$Keysyms{"3270_PA2"} = 0xFD0B;
	$Keysyms{"3270_PA3"} = 0xFD0C;
	$Keysyms{"3270_Test"} = 0xFD0D;
	$Keysyms{"3270_Attn"} = 0xFD0E;
	$Keysyms{"3270_CursorBlink"} = 0xFD0F;
	$Keysyms{"3270_AltCursor"} = 0xFD10;
	$Keysyms{"3270_KeyClick"} = 0xFD11;
	$Keysyms{"3270_Jump"} = 0xFD12;
	$Keysyms{"3270_Ident"} = 0xFD13;
	$Keysyms{"3270_Rule"} = 0xFD14;
	$Keysyms{"3270_Copy"} = 0xFD15;
	$Keysyms{"3270_Play"} = 0xFD16;
	$Keysyms{"3270_Setup"} = 0xFD17;
	$Keysyms{"3270_Record"} = 0xFD18;
	$Keysyms{"3270_ChangeScreen"} = 0xFD19;
	$Keysyms{"3270_DeleteWord"} = 0xFD1A;
	$Keysyms{"3270_ExSelect"} = 0xFD1B;
	$Keysyms{"3270_CursorSelect"} = 0xFD1C;
	$Keysyms{"3270_PrintScreen"} = 0xFD1D;
	$Keysyms{"3270_Enter"} = 0xFD1E;
    }
#endif

#
# *  Latin 1
# *  Byte 3 = 0
    
#ifdef XK_LATIN1
    if ($KL{'LATIN1'}) {
	$Keysyms{"space"} = 0x020;
	$Keysyms{"exclam"} = 0x021;
	$Keysyms{"quotedbl"} = 0x022;
	$Keysyms{"numbersign"} = 0x023;
	$Keysyms{"dollar"} = 0x024;
	$Keysyms{"percent"} = 0x025;
	$Keysyms{"ampersand"} = 0x026;
	$Keysyms{"apostrophe"} = 0x027;
	$Keysyms{"quoteright"} = 0x027;	# deprecated 
	$Keysyms{"parenleft"} = 0x028;
	$Keysyms{"parenright"} = 0x029;
	$Keysyms{"asterisk"} = 0x02a;
	$Keysyms{"plus"} = 0x02b;
	$Keysyms{"comma"} = 0x02c;
	$Keysyms{"minus"} = 0x02d;
	$Keysyms{"period"} = 0x02e;
	$Keysyms{"slash"} = 0x02f;
	$Keysyms{"0"} = 0x030;
	$Keysyms{"1"} = 0x031;
	$Keysyms{"2"} = 0x032;
	$Keysyms{"3"} = 0x033;
	$Keysyms{"4"} = 0x034;
	$Keysyms{"5"} = 0x035;
	$Keysyms{"6"} = 0x036;
	$Keysyms{"7"} = 0x037;
	$Keysyms{"8"} = 0x038;
	$Keysyms{"9"} = 0x039;
	$Keysyms{"colon"} = 0x03a;
	$Keysyms{"semicolon"} = 0x03b;
	$Keysyms{"less"} = 0x03c;
	$Keysyms{"equal"} = 0x03d;
	$Keysyms{"greater"} = 0x03e;
	$Keysyms{"question"} = 0x03f;
	$Keysyms{"at"} = 0x040;
	$Keysyms{"A"} = 0x041;
	$Keysyms{"B"} = 0x042;
	$Keysyms{"C"} = 0x043;
	$Keysyms{"D"} = 0x044;
	$Keysyms{"E"} = 0x045;
	$Keysyms{"F"} = 0x046;
	$Keysyms{"G"} = 0x047;
	$Keysyms{"H"} = 0x048;
	$Keysyms{"I"} = 0x049;
	$Keysyms{"J"} = 0x04a;
	$Keysyms{"K"} = 0x04b;
	$Keysyms{"L"} = 0x04c;
	$Keysyms{"M"} = 0x04d;
	$Keysyms{"N"} = 0x04e;
	$Keysyms{"O"} = 0x04f;
	$Keysyms{"P"} = 0x050;
	$Keysyms{"Q"} = 0x051;
	$Keysyms{"R"} = 0x052;
	$Keysyms{"S"} = 0x053;
	$Keysyms{"T"} = 0x054;
	$Keysyms{"U"} = 0x055;
	$Keysyms{"V"} = 0x056;
	$Keysyms{"W"} = 0x057;
	$Keysyms{"X"} = 0x058;
	$Keysyms{"Y"} = 0x059;
	$Keysyms{"Z"} = 0x05a;
	$Keysyms{"bracketleft"} = 0x05b;
	$Keysyms{"backslash"} = 0x05c;
	$Keysyms{"bracketright"} = 0x05d;
	$Keysyms{"asciicircum"} = 0x05e;
	$Keysyms{"underscore"} = 0x05f;
	$Keysyms{"grave"} = 0x060;
	$Keysyms{"quoteleft"} = 0x060;	# deprecated 
	$Keysyms{"a"} = 0x061;
	$Keysyms{"b"} = 0x062;
	$Keysyms{"c"} = 0x063;
	$Keysyms{"d"} = 0x064;
	$Keysyms{"e"} = 0x065;
	$Keysyms{"f"} = 0x066;
	$Keysyms{"g"} = 0x067;
	$Keysyms{"h"} = 0x068;
	$Keysyms{"i"} = 0x069;
	$Keysyms{"j"} = 0x06a;
	$Keysyms{"k"} = 0x06b;
	$Keysyms{"l"} = 0x06c;
	$Keysyms{"m"} = 0x06d;
	$Keysyms{"n"} = 0x06e;
	$Keysyms{"o"} = 0x06f;
	$Keysyms{"p"} = 0x070;
	$Keysyms{"q"} = 0x071;
	$Keysyms{"r"} = 0x072;
	$Keysyms{"s"} = 0x073;
	$Keysyms{"t"} = 0x074;
	$Keysyms{"u"} = 0x075;
	$Keysyms{"v"} = 0x076;
	$Keysyms{"w"} = 0x077;
	$Keysyms{"x"} = 0x078;
	$Keysyms{"y"} = 0x079;
	$Keysyms{"z"} = 0x07a;
	$Keysyms{"braceleft"} = 0x07b;
	$Keysyms{"bar"} = 0x07c;
	$Keysyms{"braceright"} = 0x07d;
	$Keysyms{"asciitilde"} = 0x07e;

	$Keysyms{"nobreakspace"} = 0x0a0;
	$Keysyms{"exclamdown"} = 0x0a1;
	$Keysyms{"cent"} = 0x0a2;
	$Keysyms{"sterling"} = 0x0a3;
	$Keysyms{"currency"} = 0x0a4;
	$Keysyms{"yen"} = 0x0a5;
	$Keysyms{"brokenbar"} = 0x0a6;
	$Keysyms{"section"} = 0x0a7;
	$Keysyms{"diaeresis"} = 0x0a8;
	$Keysyms{"copyright"} = 0x0a9;
	$Keysyms{"ordfeminine"} = 0x0aa;
	$Keysyms{"guillemotleft"} = 0x0ab;	# left angle quotation mark 
	$Keysyms{"notsign"} = 0x0ac;
	$Keysyms{"hyphen"} = 0x0ad;
	$Keysyms{"registered"} = 0x0ae;
	$Keysyms{"macron"} = 0x0af;
	$Keysyms{"degree"} = 0x0b0;
	$Keysyms{"plusminus"} = 0x0b1;
	$Keysyms{"twosuperior"} = 0x0b2;
	$Keysyms{"threesuperior"} = 0x0b3;
	$Keysyms{"acute"} = 0x0b4;
	$Keysyms{"mu"} = 0x0b5;
	$Keysyms{"paragraph"} = 0x0b6;
	$Keysyms{"periodcentered"} = 0x0b7;
	$Keysyms{"cedilla"} = 0x0b8;
	$Keysyms{"onesuperior"} = 0x0b9;
	$Keysyms{"masculine"} = 0x0ba;
	$Keysyms{"guillemotright"} = 0x0bb;	# right angle quotation mark 
	$Keysyms{"onequarter"} = 0x0bc;
	$Keysyms{"onehalf"} = 0x0bd;
	$Keysyms{"threequarters"} = 0x0be;
	$Keysyms{"questiondown"} = 0x0bf;
	$Keysyms{"Agrave"} = 0x0c0;
	$Keysyms{"Aacute"} = 0x0c1;
	$Keysyms{"Acircumflex"} = 0x0c2;
	$Keysyms{"Atilde"} = 0x0c3;
	$Keysyms{"Adiaeresis"} = 0x0c4;
	$Keysyms{"Aring"} = 0x0c5;
	$Keysyms{"AE"} = 0x0c6;
	$Keysyms{"Ccedilla"} = 0x0c7;
	$Keysyms{"Egrave"} = 0x0c8;
	$Keysyms{"Eacute"} = 0x0c9;
	$Keysyms{"Ecircumflex"} = 0x0ca;
	$Keysyms{"Ediaeresis"} = 0x0cb;
	$Keysyms{"Igrave"} = 0x0cc;
	$Keysyms{"Iacute"} = 0x0cd;
	$Keysyms{"Icircumflex"} = 0x0ce;
	$Keysyms{"Idiaeresis"} = 0x0cf;
	$Keysyms{"ETH"} = 0x0d0;
	$Keysyms{"Eth"} = 0x0d0;	# deprecated 
	$Keysyms{"Ntilde"} = 0x0d1;
	$Keysyms{"Ograve"} = 0x0d2;
	$Keysyms{"Oacute"} = 0x0d3;
	$Keysyms{"Ocircumflex"} = 0x0d4;
	$Keysyms{"Otilde"} = 0x0d5;
	$Keysyms{"Odiaeresis"} = 0x0d6;
	$Keysyms{"multiply"} = 0x0d7;
	$Keysyms{"Ooblique"} = 0x0d8;
	$Keysyms{"Ugrave"} = 0x0d9;
	$Keysyms{"Uacute"} = 0x0da;
	$Keysyms{"Ucircumflex"} = 0x0db;
	$Keysyms{"Udiaeresis"} = 0x0dc;
	$Keysyms{"Yacute"} = 0x0dd;
	$Keysyms{"THORN"} = 0x0de;
	$Keysyms{"Thorn"} = 0x0de;	# deprecated 
	$Keysyms{"ssharp"} = 0x0df;
	$Keysyms{"agrave"} = 0x0e0;
	$Keysyms{"aacute"} = 0x0e1;
	$Keysyms{"acircumflex"} = 0x0e2;
	$Keysyms{"atilde"} = 0x0e3;
	$Keysyms{"adiaeresis"} = 0x0e4;
	$Keysyms{"aring"} = 0x0e5;
	$Keysyms{"ae"} = 0x0e6;
	$Keysyms{"ccedilla"} = 0x0e7;
	$Keysyms{"egrave"} = 0x0e8;
	$Keysyms{"eacute"} = 0x0e9;
	$Keysyms{"ecircumflex"} = 0x0ea;
	$Keysyms{"ediaeresis"} = 0x0eb;
	$Keysyms{"igrave"} = 0x0ec;
	$Keysyms{"iacute"} = 0x0ed;
	$Keysyms{"icircumflex"} = 0x0ee;
	$Keysyms{"idiaeresis"} = 0x0ef;
	$Keysyms{"eth"} = 0x0f0;
	$Keysyms{"ntilde"} = 0x0f1;
	$Keysyms{"ograve"} = 0x0f2;
	$Keysyms{"oacute"} = 0x0f3;
	$Keysyms{"ocircumflex"} = 0x0f4;
	$Keysyms{"otilde"} = 0x0f5;
	$Keysyms{"odiaeresis"} = 0x0f6;
	$Keysyms{"division"} = 0x0f7;
	$Keysyms{"oslash"} = 0x0f8;
	$Keysyms{"ugrave"} = 0x0f9;
	$Keysyms{"uacute"} = 0x0fa;
	$Keysyms{"ucircumflex"} = 0x0fb;
	$Keysyms{"udiaeresis"} = 0x0fc;
	$Keysyms{"yacute"} = 0x0fd;
	$Keysyms{"thorn"} = 0x0fe;
	$Keysyms{"ydiaeresis"} = 0x0ff;
    }
#endif # XK_LATIN1 

#
# *   Latin 2
# *   Byte 3 = 1
    

#ifdef XK_LATIN2
    if ($KL{'LATIN2'}) {
	$Keysyms{"Aogonek"} = 0x1a1;
	$Keysyms{"breve"} = 0x1a2;
	$Keysyms{"Lstroke"} = 0x1a3;
	$Keysyms{"Lcaron"} = 0x1a5;
	$Keysyms{"Sacute"} = 0x1a6;
	$Keysyms{"Scaron"} = 0x1a9;
	$Keysyms{"Scedilla"} = 0x1aa;
	$Keysyms{"Tcaron"} = 0x1ab;
	$Keysyms{"Zacute"} = 0x1ac;
	$Keysyms{"Zcaron"} = 0x1ae;
	$Keysyms{"Zabovedot"} = 0x1af;
	$Keysyms{"aogonek"} = 0x1b1;
	$Keysyms{"ogonek"} = 0x1b2;
	$Keysyms{"lstroke"} = 0x1b3;
	$Keysyms{"lcaron"} = 0x1b5;
	$Keysyms{"sacute"} = 0x1b6;
	$Keysyms{"caron"} = 0x1b7;
	$Keysyms{"scaron"} = 0x1b9;
	$Keysyms{"scedilla"} = 0x1ba;
	$Keysyms{"tcaron"} = 0x1bb;
	$Keysyms{"zacute"} = 0x1bc;
	$Keysyms{"doubleacute"} = 0x1bd;
	$Keysyms{"zcaron"} = 0x1be;
	$Keysyms{"zabovedot"} = 0x1bf;
	$Keysyms{"Racute"} = 0x1c0;
	$Keysyms{"Abreve"} = 0x1c3;
	$Keysyms{"Lacute"} = 0x1c5;
	$Keysyms{"Cacute"} = 0x1c6;
	$Keysyms{"Ccaron"} = 0x1c8;
	$Keysyms{"Eogonek"} = 0x1ca;
	$Keysyms{"Ecaron"} = 0x1cc;
	$Keysyms{"Dcaron"} = 0x1cf;
	$Keysyms{"Dstroke"} = 0x1d0;
	$Keysyms{"Nacute"} = 0x1d1;
	$Keysyms{"Ncaron"} = 0x1d2;
	$Keysyms{"Odoubleacute"} = 0x1d5;
	$Keysyms{"Rcaron"} = 0x1d8;
	$Keysyms{"Uring"} = 0x1d9;
	$Keysyms{"Udoubleacute"} = 0x1db;
	$Keysyms{"Tcedilla"} = 0x1de;
	$Keysyms{"racute"} = 0x1e0;
	$Keysyms{"abreve"} = 0x1e3;
	$Keysyms{"lacute"} = 0x1e5;
	$Keysyms{"cacute"} = 0x1e6;
	$Keysyms{"ccaron"} = 0x1e8;
	$Keysyms{"eogonek"} = 0x1ea;
	$Keysyms{"ecaron"} = 0x1ec;
	$Keysyms{"dcaron"} = 0x1ef;
	$Keysyms{"dstroke"} = 0x1f0;
	$Keysyms{"nacute"} = 0x1f1;
	$Keysyms{"ncaron"} = 0x1f2;
	$Keysyms{"odoubleacute"} = 0x1f5;
	$Keysyms{"udoubleacute"} = 0x1fb;
	$Keysyms{"rcaron"} = 0x1f8;
	$Keysyms{"uring"} = 0x1f9;
	$Keysyms{"tcedilla"} = 0x1fe;
	$Keysyms{"abovedot"} = 0x1ff;
    }
#endif # XK_LATIN2 

#
# *   Latin 3
# *   Byte 3 = 2
    

#ifdef XK_LATIN3
    if ($KL{'LATIN3'}) {
	$Keysyms{"Hstroke"} = 0x2a1;
	$Keysyms{"Hcircumflex"} = 0x2a6;
	$Keysyms{"Iabovedot"} = 0x2a9;
	$Keysyms{"Gbreve"} = 0x2ab;
	$Keysyms{"Jcircumflex"} = 0x2ac;
	$Keysyms{"hstroke"} = 0x2b1;
	$Keysyms{"hcircumflex"} = 0x2b6;
	$Keysyms{"idotless"} = 0x2b9;
	$Keysyms{"gbreve"} = 0x2bb;
	$Keysyms{"jcircumflex"} = 0x2bc;
	$Keysyms{"Cabovedot"} = 0x2c5;
	$Keysyms{"Ccircumflex"} = 0x2c6;
	$Keysyms{"Gabovedot"} = 0x2d5;
	$Keysyms{"Gcircumflex"} = 0x2d8;
	$Keysyms{"Ubreve"} = 0x2dd;
	$Keysyms{"Scircumflex"} = 0x2de;
	$Keysyms{"cabovedot"} = 0x2e5;
	$Keysyms{"ccircumflex"} = 0x2e6;
	$Keysyms{"gabovedot"} = 0x2f5;
	$Keysyms{"gcircumflex"} = 0x2f8;
	$Keysyms{"ubreve"} = 0x2fd;
	$Keysyms{"scircumflex"} = 0x2fe;
    }
#endif # XK_LATIN3 


#
# *   Latin 4
# *   Byte 3 = 3
    

#ifdef XK_LATIN4
    if ($KL{'LATIN4'}) {
	$Keysyms{"kra"} = 0x3a2;
	$Keysyms{"kappa"} = 0x3a2;	# deprecated 
	$Keysyms{"Rcedilla"} = 0x3a3;
	$Keysyms{"Itilde"} = 0x3a5;
	$Keysyms{"Lcedilla"} = 0x3a6;
	$Keysyms{"Emacron"} = 0x3aa;
	$Keysyms{"Gcedilla"} = 0x3ab;
	$Keysyms{"Tslash"} = 0x3ac;
	$Keysyms{"rcedilla"} = 0x3b3;
	$Keysyms{"itilde"} = 0x3b5;
	$Keysyms{"lcedilla"} = 0x3b6;
	$Keysyms{"emacron"} = 0x3ba;
	$Keysyms{"gcedilla"} = 0x3bb;
	$Keysyms{"tslash"} = 0x3bc;
	$Keysyms{"ENG"} = 0x3bd;
	$Keysyms{"eng"} = 0x3bf;
	$Keysyms{"Amacron"} = 0x3c0;
	$Keysyms{"Iogonek"} = 0x3c7;
	$Keysyms{"Eabovedot"} = 0x3cc;
	$Keysyms{"Imacron"} = 0x3cf;
	$Keysyms{"Ncedilla"} = 0x3d1;
	$Keysyms{"Omacron"} = 0x3d2;
	$Keysyms{"Kcedilla"} = 0x3d3;
	$Keysyms{"Uogonek"} = 0x3d9;
	$Keysyms{"Utilde"} = 0x3dd;
	$Keysyms{"Umacron"} = 0x3de;
	$Keysyms{"amacron"} = 0x3e0;
	$Keysyms{"iogonek"} = 0x3e7;
	$Keysyms{"eabovedot"} = 0x3ec;
	$Keysyms{"imacron"} = 0x3ef;
	$Keysyms{"ncedilla"} = 0x3f1;
	$Keysyms{"omacron"} = 0x3f2;
	$Keysyms{"kcedilla"} = 0x3f3;
	$Keysyms{"uogonek"} = 0x3f9;
	$Keysyms{"utilde"} = 0x3fd;
	$Keysyms{"umacron"} = 0x3fe;
    }
#endif # XK_LATIN4 

#
# * Katakana
# * Byte 3 = 4
    

#ifdef XK_KATAKANA
    if ($KL{'KATAKANA'}) {
	$Keysyms{"overline"} = 0x47e;
	$Keysyms{"kana_fullstop"} = 0x4a1;
	$Keysyms{"kana_openingbracket"} = 0x4a2;
	$Keysyms{"kana_closingbracket"} = 0x4a3;
	$Keysyms{"kana_comma"} = 0x4a4;
	$Keysyms{"kana_conjunctive"} = 0x4a5;
	$Keysyms{"kana_middledot"} = 0x4a5;  # deprecated 
	$Keysyms{"kana_WO"} = 0x4a6;
	$Keysyms{"kana_a"} = 0x4a7;
	$Keysyms{"kana_i"} = 0x4a8;
	$Keysyms{"kana_u"} = 0x4a9;
	$Keysyms{"kana_e"} = 0x4aa;
	$Keysyms{"kana_o"} = 0x4ab;
	$Keysyms{"kana_ya"} = 0x4ac;
	$Keysyms{"kana_yu"} = 0x4ad;
	$Keysyms{"kana_yo"} = 0x4ae;
	$Keysyms{"kana_tsu"} = 0x4af;
	$Keysyms{"kana_tu"} = 0x4af;  # deprecated 
	$Keysyms{"prolongedsound"} = 0x4b0;
	$Keysyms{"kana_A"} = 0x4b1;
	$Keysyms{"kana_I"} = 0x4b2;
	$Keysyms{"kana_U"} = 0x4b3;
	$Keysyms{"kana_E"} = 0x4b4;
	$Keysyms{"kana_O"} = 0x4b5;
	$Keysyms{"kana_KA"} = 0x4b6;
	$Keysyms{"kana_KI"} = 0x4b7;
	$Keysyms{"kana_KU"} = 0x4b8;
	$Keysyms{"kana_KE"} = 0x4b9;
	$Keysyms{"kana_KO"} = 0x4ba;
	$Keysyms{"kana_SA"} = 0x4bb;
	$Keysyms{"kana_SHI"} = 0x4bc;
	$Keysyms{"kana_SU"} = 0x4bd;
	$Keysyms{"kana_SE"} = 0x4be;
	$Keysyms{"kana_SO"} = 0x4bf;
	$Keysyms{"kana_TA"} = 0x4c0;
	$Keysyms{"kana_CHI"} = 0x4c1;
	$Keysyms{"kana_TI"} = 0x4c1;  # deprecated 
	$Keysyms{"kana_TSU"} = 0x4c2;
	$Keysyms{"kana_TU"} = 0x4c2;  # deprecated 
	$Keysyms{"kana_TE"} = 0x4c3;
	$Keysyms{"kana_TO"} = 0x4c4;
	$Keysyms{"kana_NA"} = 0x4c5;
	$Keysyms{"kana_NI"} = 0x4c6;
	$Keysyms{"kana_NU"} = 0x4c7;
	$Keysyms{"kana_NE"} = 0x4c8;
	$Keysyms{"kana_NO"} = 0x4c9;
	$Keysyms{"kana_HA"} = 0x4ca;
	$Keysyms{"kana_HI"} = 0x4cb;
	$Keysyms{"kana_FU"} = 0x4cc;
	$Keysyms{"kana_HU"} = 0x4cc;  # deprecated 
	$Keysyms{"kana_HE"} = 0x4cd;
	$Keysyms{"kana_HO"} = 0x4ce;
	$Keysyms{"kana_MA"} = 0x4cf;
	$Keysyms{"kana_MI"} = 0x4d0;
	$Keysyms{"kana_MU"} = 0x4d1;
	$Keysyms{"kana_ME"} = 0x4d2;
	$Keysyms{"kana_MO"} = 0x4d3;
	$Keysyms{"kana_YA"} = 0x4d4;
	$Keysyms{"kana_YU"} = 0x4d5;
	$Keysyms{"kana_YO"} = 0x4d6;
	$Keysyms{"kana_RA"} = 0x4d7;
	$Keysyms{"kana_RI"} = 0x4d8;
	$Keysyms{"kana_RU"} = 0x4d9;
	$Keysyms{"kana_RE"} = 0x4da;
	$Keysyms{"kana_RO"} = 0x4db;
	$Keysyms{"kana_WA"} = 0x4dc;
	$Keysyms{"kana_N"} = 0x4dd;
	$Keysyms{"voicedsound"} = 0x4de;
	$Keysyms{"semivoicedsound"} = 0x4df;
	$Keysyms{"kana_switch"} = 0xFF7E;  # Alias for mode_switch 
    }
#endif # XK_KATAKANA 

#
# *  Arabic
# *  Byte 3 = 5
    

#ifdef XK_ARABIC
    if ($KL{'ARABIC'}) {
	$Keysyms{"Arabic_comma"} = 0x5ac;
	$Keysyms{"Arabic_semicolon"} = 0x5bb;
	$Keysyms{"Arabic_question_mark"} = 0x5bf;
	$Keysyms{"Arabic_hamza"} = 0x5c1;
	$Keysyms{"Arabic_maddaonalef"} = 0x5c2;
	$Keysyms{"Arabic_hamzaonalef"} = 0x5c3;
	$Keysyms{"Arabic_hamzaonwaw"} = 0x5c4;
	$Keysyms{"Arabic_hamzaunderalef"} = 0x5c5;
	$Keysyms{"Arabic_hamzaonyeh"} = 0x5c6;
	$Keysyms{"Arabic_alef"} = 0x5c7;
	$Keysyms{"Arabic_beh"} = 0x5c8;
	$Keysyms{"Arabic_tehmarbuta"} = 0x5c9;
	$Keysyms{"Arabic_teh"} = 0x5ca;
	$Keysyms{"Arabic_theh"} = 0x5cb;
	$Keysyms{"Arabic_jeem"} = 0x5cc;
	$Keysyms{"Arabic_hah"} = 0x5cd;
	$Keysyms{"Arabic_khah"} = 0x5ce;
	$Keysyms{"Arabic_dal"} = 0x5cf;
	$Keysyms{"Arabic_thal"} = 0x5d0;
	$Keysyms{"Arabic_ra"} = 0x5d1;
	$Keysyms{"Arabic_zain"} = 0x5d2;
	$Keysyms{"Arabic_seen"} = 0x5d3;
	$Keysyms{"Arabic_sheen"} = 0x5d4;
	$Keysyms{"Arabic_sad"} = 0x5d5;
	$Keysyms{"Arabic_dad"} = 0x5d6;
	$Keysyms{"Arabic_tah"} = 0x5d7;
	$Keysyms{"Arabic_zah"} = 0x5d8;
	$Keysyms{"Arabic_ain"} = 0x5d9;
	$Keysyms{"Arabic_ghain"} = 0x5da;
	$Keysyms{"Arabic_tatweel"} = 0x5e0;
	$Keysyms{"Arabic_feh"} = 0x5e1;
	$Keysyms{"Arabic_qaf"} = 0x5e2;
	$Keysyms{"Arabic_kaf"} = 0x5e3;
	$Keysyms{"Arabic_lam"} = 0x5e4;
	$Keysyms{"Arabic_meem"} = 0x5e5;
	$Keysyms{"Arabic_noon"} = 0x5e6;
	$Keysyms{"Arabic_ha"} = 0x5e7;
	$Keysyms{"Arabic_heh"} = 0x5e7;  # deprecated 
	$Keysyms{"Arabic_waw"} = 0x5e8;
	$Keysyms{"Arabic_alefmaksura"} = 0x5e9;
	$Keysyms{"Arabic_yeh"} = 0x5ea;
	$Keysyms{"Arabic_fathatan"} = 0x5eb;
	$Keysyms{"Arabic_dammatan"} = 0x5ec;
	$Keysyms{"Arabic_kasratan"} = 0x5ed;
	$Keysyms{"Arabic_fatha"} = 0x5ee;
	$Keysyms{"Arabic_damma"} = 0x5ef;
	$Keysyms{"Arabic_kasra"} = 0x5f0;
	$Keysyms{"Arabic_shadda"} = 0x5f1;
	$Keysyms{"Arabic_sukun"} = 0x5f2;
	$Keysyms{"Arabic_switch"} = 0xFF7E;  # Alias for mode_switch 
    }
#endif # XK_ARABIC 

#
# * Cyrillic
# * Byte 3 = 6
    
#ifdef XK_CYRILLIC
    if ($KL{'CYRILLIC'}) {
	$Keysyms{"Serbian_dje"} = 0x6a1;
	$Keysyms{"Macedonia_gje"} = 0x6a2;
	$Keysyms{"Cyrillic_io"} = 0x6a3;
	$Keysyms{"Ukrainian_ie"} = 0x6a4;
	$Keysyms{"Ukranian_je"} = 0x6a4;  # deprecated 
	$Keysyms{"Macedonia_dse"} = 0x6a5;
	$Keysyms{"Ukrainian_i"} = 0x6a6;
	$Keysyms{"Ukranian_i"} = 0x6a6;  # deprecated 
	$Keysyms{"Ukrainian_yi"} = 0x6a7;
	$Keysyms{"Ukranian_yi"} = 0x6a7;  # deprecated 
	$Keysyms{"Cyrillic_je"} = 0x6a8;
	$Keysyms{"Serbian_je"} = 0x6a8;  # deprecated 
	$Keysyms{"Cyrillic_lje"} = 0x6a9;
	$Keysyms{"Serbian_lje"} = 0x6a9;  # deprecated 
	$Keysyms{"Cyrillic_nje"} = 0x6aa;
	$Keysyms{"Serbian_nje"} = 0x6aa;  # deprecated 
	$Keysyms{"Serbian_tshe"} = 0x6ab;
	$Keysyms{"Macedonia_kje"} = 0x6ac;
	$Keysyms{"Byelorussian_shortu"} = 0x6ae;
	$Keysyms{"Cyrillic_dzhe"} = 0x6af;
	$Keysyms{"Serbian_dze"} = 0x6af;  # deprecated 
	$Keysyms{"numerosign"} = 0x6b0;
	$Keysyms{"Serbian_DJE"} = 0x6b1;
	$Keysyms{"Macedonia_GJE"} = 0x6b2;
	$Keysyms{"Cyrillic_IO"} = 0x6b3;
	$Keysyms{"Ukrainian_IE"} = 0x6b4;
	$Keysyms{"Ukranian_JE"} = 0x6b4;  # deprecated 
	$Keysyms{"Macedonia_DSE"} = 0x6b5;
	$Keysyms{"Ukrainian_I"} = 0x6b6;
	$Keysyms{"Ukranian_I"} = 0x6b6;  # deprecated 
	$Keysyms{"Ukrainian_YI"} = 0x6b7;
	$Keysyms{"Ukranian_YI"} = 0x6b7;  # deprecated 
	$Keysyms{"Cyrillic_JE"} = 0x6b8;
	$Keysyms{"Serbian_JE"} = 0x6b8;  # deprecated 
	$Keysyms{"Cyrillic_LJE"} = 0x6b9;
	$Keysyms{"Serbian_LJE"} = 0x6b9;  # deprecated 
	$Keysyms{"Cyrillic_NJE"} = 0x6ba;
	$Keysyms{"Serbian_NJE"} = 0x6ba;  # deprecated 
	$Keysyms{"Serbian_TSHE"} = 0x6bb;
	$Keysyms{"Macedonia_KJE"} = 0x6bc;
	$Keysyms{"Byelorussian_SHORTU"} = 0x6be;
	$Keysyms{"Cyrillic_DZHE"} = 0x6bf;
	$Keysyms{"Serbian_DZE"} = 0x6bf;  # deprecated 
	$Keysyms{"Cyrillic_yu"} = 0x6c0;
	$Keysyms{"Cyrillic_a"} = 0x6c1;
	$Keysyms{"Cyrillic_be"} = 0x6c2;
	$Keysyms{"Cyrillic_tse"} = 0x6c3;
	$Keysyms{"Cyrillic_de"} = 0x6c4;
	$Keysyms{"Cyrillic_ie"} = 0x6c5;
	$Keysyms{"Cyrillic_ef"} = 0x6c6;
	$Keysyms{"Cyrillic_ghe"} = 0x6c7;
	$Keysyms{"Cyrillic_ha"} = 0x6c8;
	$Keysyms{"Cyrillic_i"} = 0x6c9;
	$Keysyms{"Cyrillic_shorti"} = 0x6ca;
	$Keysyms{"Cyrillic_ka"} = 0x6cb;
	$Keysyms{"Cyrillic_el"} = 0x6cc;
	$Keysyms{"Cyrillic_em"} = 0x6cd;
	$Keysyms{"Cyrillic_en"} = 0x6ce;
	$Keysyms{"Cyrillic_o"} = 0x6cf;
	$Keysyms{"Cyrillic_pe"} = 0x6d0;
	$Keysyms{"Cyrillic_ya"} = 0x6d1;
	$Keysyms{"Cyrillic_er"} = 0x6d2;
	$Keysyms{"Cyrillic_es"} = 0x6d3;
	$Keysyms{"Cyrillic_te"} = 0x6d4;
	$Keysyms{"Cyrillic_u"} = 0x6d5;
	$Keysyms{"Cyrillic_zhe"} = 0x6d6;
	$Keysyms{"Cyrillic_ve"} = 0x6d7;
	$Keysyms{"Cyrillic_softsign"} = 0x6d8;
	$Keysyms{"Cyrillic_yeru"} = 0x6d9;
	$Keysyms{"Cyrillic_ze"} = 0x6da;
	$Keysyms{"Cyrillic_sha"} = 0x6db;
	$Keysyms{"Cyrillic_e"} = 0x6dc;
	$Keysyms{"Cyrillic_shcha"} = 0x6dd;
	$Keysyms{"Cyrillic_che"} = 0x6de;
	$Keysyms{"Cyrillic_hardsign"} = 0x6df;
	$Keysyms{"Cyrillic_YU"} = 0x6e0;
	$Keysyms{"Cyrillic_A"} = 0x6e1;
	$Keysyms{"Cyrillic_BE"} = 0x6e2;
	$Keysyms{"Cyrillic_TSE"} = 0x6e3;
	$Keysyms{"Cyrillic_DE"} = 0x6e4;
	$Keysyms{"Cyrillic_IE"} = 0x6e5;
	$Keysyms{"Cyrillic_EF"} = 0x6e6;
	$Keysyms{"Cyrillic_GHE"} = 0x6e7;
	$Keysyms{"Cyrillic_HA"} = 0x6e8;
	$Keysyms{"Cyrillic_I"} = 0x6e9;
	$Keysyms{"Cyrillic_SHORTI"} = 0x6ea;
	$Keysyms{"Cyrillic_KA"} = 0x6eb;
	$Keysyms{"Cyrillic_EL"} = 0x6ec;
	$Keysyms{"Cyrillic_EM"} = 0x6ed;
	$Keysyms{"Cyrillic_EN"} = 0x6ee;
	$Keysyms{"Cyrillic_O"} = 0x6ef;
	$Keysyms{"Cyrillic_PE"} = 0x6f0;
	$Keysyms{"Cyrillic_YA"} = 0x6f1;
	$Keysyms{"Cyrillic_ER"} = 0x6f2;
	$Keysyms{"Cyrillic_ES"} = 0x6f3;
	$Keysyms{"Cyrillic_TE"} = 0x6f4;
	$Keysyms{"Cyrillic_U"} = 0x6f5;
	$Keysyms{"Cyrillic_ZHE"} = 0x6f6;
	$Keysyms{"Cyrillic_VE"} = 0x6f7;
	$Keysyms{"Cyrillic_SOFTSIGN"} = 0x6f8;
	$Keysyms{"Cyrillic_YERU"} = 0x6f9;
	$Keysyms{"Cyrillic_ZE"} = 0x6fa;
	$Keysyms{"Cyrillic_SHA"} = 0x6fb;
	$Keysyms{"Cyrillic_E"} = 0x6fc;
	$Keysyms{"Cyrillic_SHCHA"} = 0x6fd;
	$Keysyms{"Cyrillic_CHE"} = 0x6fe;
	$Keysyms{"Cyrillic_HARDSIGN"} = 0x6ff;
    }
#endif # XK_CYRILLIC 

#
# * Greek
# * Byte 3 = 7
    

#ifdef XK_GREEK
    if ($KL{'GREEK'}) {
	$Keysyms{"Greek_ALPHAaccent"} = 0x7a1;
	$Keysyms{"Greek_EPSILONaccent"} = 0x7a2;
	$Keysyms{"Greek_ETAaccent"} = 0x7a3;
	$Keysyms{"Greek_IOTAaccent"} = 0x7a4;
	$Keysyms{"Greek_IOTAdiaeresis"} = 0x7a5;
	$Keysyms{"Greek_OMICRONaccent"} = 0x7a7;
	$Keysyms{"Greek_UPSILONaccent"} = 0x7a8;
	$Keysyms{"Greek_UPSILONdieresis"} = 0x7a9;
	$Keysyms{"Greek_OMEGAaccent"} = 0x7ab;
	$Keysyms{"Greek_accentdieresis"} = 0x7ae;
	$Keysyms{"Greek_horizbar"} = 0x7af;
	$Keysyms{"Greek_alphaaccent"} = 0x7b1;
	$Keysyms{"Greek_epsilonaccent"} = 0x7b2;
	$Keysyms{"Greek_etaaccent"} = 0x7b3;
	$Keysyms{"Greek_iotaaccent"} = 0x7b4;
	$Keysyms{"Greek_iotadieresis"} = 0x7b5;
	$Keysyms{"Greek_iotaaccentdieresis"} = 0x7b6;
	$Keysyms{"Greek_omicronaccent"} = 0x7b7;
	$Keysyms{"Greek_upsilonaccent"} = 0x7b8;
	$Keysyms{"Greek_upsilondieresis"} = 0x7b9;
	$Keysyms{"Greek_upsilonaccentdieresis"} = 0x7ba;
	$Keysyms{"Greek_omegaaccent"} = 0x7bb;
	$Keysyms{"Greek_ALPHA"} = 0x7c1;
	$Keysyms{"Greek_BETA"} = 0x7c2;
	$Keysyms{"Greek_GAMMA"} = 0x7c3;
	$Keysyms{"Greek_DELTA"} = 0x7c4;
	$Keysyms{"Greek_EPSILON"} = 0x7c5;
	$Keysyms{"Greek_ZETA"} = 0x7c6;
	$Keysyms{"Greek_ETA"} = 0x7c7;
	$Keysyms{"Greek_THETA"} = 0x7c8;
	$Keysyms{"Greek_IOTA"} = 0x7c9;
	$Keysyms{"Greek_KAPPA"} = 0x7ca;
	$Keysyms{"Greek_LAMDA"} = 0x7cb;
	$Keysyms{"Greek_LAMBDA"} = 0x7cb;
	$Keysyms{"Greek_MU"} = 0x7cc;
	$Keysyms{"Greek_NU"} = 0x7cd;
	$Keysyms{"Greek_XI"} = 0x7ce;
	$Keysyms{"Greek_OMICRON"} = 0x7cf;
	$Keysyms{"Greek_PI"} = 0x7d0;
	$Keysyms{"Greek_RHO"} = 0x7d1;
	$Keysyms{"Greek_SIGMA"} = 0x7d2;
	$Keysyms{"Greek_TAU"} = 0x7d4;
	$Keysyms{"Greek_UPSILON"} = 0x7d5;
	$Keysyms{"Greek_PHI"} = 0x7d6;
	$Keysyms{"Greek_CHI"} = 0x7d7;
	$Keysyms{"Greek_PSI"} = 0x7d8;
	$Keysyms{"Greek_OMEGA"} = 0x7d9;
	$Keysyms{"Greek_alpha"} = 0x7e1;
	$Keysyms{"Greek_beta"} = 0x7e2;
	$Keysyms{"Greek_gamma"} = 0x7e3;
	$Keysyms{"Greek_delta"} = 0x7e4;
	$Keysyms{"Greek_epsilon"} = 0x7e5;
	$Keysyms{"Greek_zeta"} = 0x7e6;
	$Keysyms{"Greek_eta"} = 0x7e7;
	$Keysyms{"Greek_theta"} = 0x7e8;
	$Keysyms{"Greek_iota"} = 0x7e9;
	$Keysyms{"Greek_kappa"} = 0x7ea;
	$Keysyms{"Greek_lamda"} = 0x7eb;
	$Keysyms{"Greek_lambda"} = 0x7eb;
	$Keysyms{"Greek_mu"} = 0x7ec;
	$Keysyms{"Greek_nu"} = 0x7ed;
	$Keysyms{"Greek_xi"} = 0x7ee;
	$Keysyms{"Greek_omicron"} = 0x7ef;
	$Keysyms{"Greek_pi"} = 0x7f0;
	$Keysyms{"Greek_rho"} = 0x7f1;
	$Keysyms{"Greek_sigma"} = 0x7f2;
	$Keysyms{"Greek_finalsmallsigma"} = 0x7f3;
	$Keysyms{"Greek_tau"} = 0x7f4;
	$Keysyms{"Greek_upsilon"} = 0x7f5;
	$Keysyms{"Greek_phi"} = 0x7f6;
	$Keysyms{"Greek_chi"} = 0x7f7;
	$Keysyms{"Greek_psi"} = 0x7f8;
	$Keysyms{"Greek_omega"} = 0x7f9;
	$Keysyms{"Greek_switch"} = 0xFF7E;  # Alias for mode_switch 
    }
#endif # XK_GREEK 

#
# * Technical
# * Byte 3 = 8
    

#ifdef XK_TECHNICAL
    if ($KL{'TECHNICAL'}) {
	$Keysyms{"leftradical"} = 0x8a1;
	$Keysyms{"topleftradical"} = 0x8a2;
	$Keysyms{"horizconnector"} = 0x8a3;
	$Keysyms{"topintegral"} = 0x8a4;
	$Keysyms{"botintegral"} = 0x8a5;
	$Keysyms{"vertconnector"} = 0x8a6;
	$Keysyms{"topleftsqbracket"} = 0x8a7;
	$Keysyms{"botleftsqbracket"} = 0x8a8;
	$Keysyms{"toprightsqbracket"} = 0x8a9;
	$Keysyms{"botrightsqbracket"} = 0x8aa;
	$Keysyms{"topleftparens"} = 0x8ab;
	$Keysyms{"botleftparens"} = 0x8ac;
	$Keysyms{"toprightparens"} = 0x8ad;
	$Keysyms{"botrightparens"} = 0x8ae;
	$Keysyms{"leftmiddlecurlybrace"} = 0x8af;
	$Keysyms{"rightmiddlecurlybrace"} = 0x8b0;
	$Keysyms{"topleftsummation"} = 0x8b1;
	$Keysyms{"botleftsummation"} = 0x8b2;
	$Keysyms{"topvertsummationconnector"} = 0x8b3;
	$Keysyms{"botvertsummationconnector"} = 0x8b4;
	$Keysyms{"toprightsummation"} = 0x8b5;
	$Keysyms{"botrightsummation"} = 0x8b6;
	$Keysyms{"rightmiddlesummation"} = 0x8b7;
	$Keysyms{"lessthanequal"} = 0x8bc;
	$Keysyms{"notequal"} = 0x8bd;
	$Keysyms{"greaterthanequal"} = 0x8be;
	$Keysyms{"integral"} = 0x8bf;
	$Keysyms{"therefore"} = 0x8c0;
	$Keysyms{"variation"} = 0x8c1;
	$Keysyms{"infinity"} = 0x8c2;
	$Keysyms{"nabla"} = 0x8c5;
	$Keysyms{"approximate"} = 0x8c8;
	$Keysyms{"similarequal"} = 0x8c9;
	$Keysyms{"ifonlyif"} = 0x8cd;
	$Keysyms{"implies"} = 0x8ce;
	$Keysyms{"identical"} = 0x8cf;
	$Keysyms{"radical"} = 0x8d6;
	$Keysyms{"includedin"} = 0x8da;
	$Keysyms{"includes"} = 0x8db;
	$Keysyms{"intersection"} = 0x8dc;
	$Keysyms{"union"} = 0x8dd;
	$Keysyms{"logicaland"} = 0x8de;
	$Keysyms{"logicalor"} = 0x8df;
	$Keysyms{"partialderivative"} = 0x8ef;
	$Keysyms{"function"} = 0x8f6;
	$Keysyms{"leftarrow"} = 0x8fb;
	$Keysyms{"uparrow"} = 0x8fc;
	$Keysyms{"rightarrow"} = 0x8fd;
	$Keysyms{"downarrow"} = 0x8fe;
    }
#endif # XK_TECHNICAL 

#
# *  Special
# *  Byte 3 = 9
    

#ifdef XK_SPECIAL
    if ($KL{'SPECIAL'}) {
	$Keysyms{"blank"} = 0x9df;
	$Keysyms{"soliddiamond"} = 0x9e0;
	$Keysyms{"checkerboard"} = 0x9e1;
	$Keysyms{"ht"} = 0x9e2;
	$Keysyms{"ff"} = 0x9e3;
	$Keysyms{"cr"} = 0x9e4;
	$Keysyms{"lf"} = 0x9e5;
	$Keysyms{"nl"} = 0x9e8;
	$Keysyms{"vt"} = 0x9e9;
	$Keysyms{"lowrightcorner"} = 0x9ea;
	$Keysyms{"uprightcorner"} = 0x9eb;
	$Keysyms{"upleftcorner"} = 0x9ec;
	$Keysyms{"lowleftcorner"} = 0x9ed;
	$Keysyms{"crossinglines"} = 0x9ee;
	$Keysyms{"horizlinescan1"} = 0x9ef;
	$Keysyms{"horizlinescan3"} = 0x9f0;
	$Keysyms{"horizlinescan5"} = 0x9f1;
	$Keysyms{"horizlinescan7"} = 0x9f2;
	$Keysyms{"horizlinescan9"} = 0x9f3;
	$Keysyms{"leftt"} = 0x9f4;
	$Keysyms{"rightt"} = 0x9f5;
	$Keysyms{"bott"} = 0x9f6;
	$Keysyms{"topt"} = 0x9f7;
	$Keysyms{"vertbar"} = 0x9f8;
    }
#endif # XK_SPECIAL 

#
# *  Publishing
# *  Byte 3 = a
    

#ifdef XK_PUBLISHING
    if ($KL{'PUBLISHING'}) {
	$Keysyms{"emspace"} = 0xaa1;
	$Keysyms{"enspace"} = 0xaa2;
	$Keysyms{"em3space"} = 0xaa3;
	$Keysyms{"em4space"} = 0xaa4;
	$Keysyms{"digitspace"} = 0xaa5;
	$Keysyms{"punctspace"} = 0xaa6;
	$Keysyms{"thinspace"} = 0xaa7;
	$Keysyms{"hairspace"} = 0xaa8;
	$Keysyms{"emdash"} = 0xaa9;
	$Keysyms{"endash"} = 0xaaa;
	$Keysyms{"signifblank"} = 0xaac;
	$Keysyms{"ellipsis"} = 0xaae;
	$Keysyms{"doubbaselinedot"} = 0xaaf;
	$Keysyms{"onethird"} = 0xab0;
	$Keysyms{"twothirds"} = 0xab1;
	$Keysyms{"onefifth"} = 0xab2;
	$Keysyms{"twofifths"} = 0xab3;
	$Keysyms{"threefifths"} = 0xab4;
	$Keysyms{"fourfifths"} = 0xab5;
	$Keysyms{"onesixth"} = 0xab6;
	$Keysyms{"fivesixths"} = 0xab7;
	$Keysyms{"careof"} = 0xab8;
	$Keysyms{"figdash"} = 0xabb;
	$Keysyms{"leftanglebracket"} = 0xabc;
	$Keysyms{"decimalpoint"} = 0xabd;
	$Keysyms{"rightanglebracket"} = 0xabe;
	$Keysyms{"marker"} = 0xabf;
	$Keysyms{"oneeighth"} = 0xac3;
	$Keysyms{"threeeighths"} = 0xac4;
	$Keysyms{"fiveeighths"} = 0xac5;
	$Keysyms{"seveneighths"} = 0xac6;
	$Keysyms{"trademark"} = 0xac9;
	$Keysyms{"signaturemark"} = 0xaca;
	$Keysyms{"trademarkincircle"} = 0xacb;
	$Keysyms{"leftopentriangle"} = 0xacc;
	$Keysyms{"rightopentriangle"} = 0xacd;
	$Keysyms{"emopencircle"} = 0xace;
	$Keysyms{"emopenrectangle"} = 0xacf;
	$Keysyms{"leftsinglequotemark"} = 0xad0;
	$Keysyms{"rightsinglequotemark"} = 0xad1;
	$Keysyms{"leftdoublequotemark"} = 0xad2;
	$Keysyms{"rightdoublequotemark"} = 0xad3;
	$Keysyms{"prescription"} = 0xad4;
	$Keysyms{"minutes"} = 0xad6;
	$Keysyms{"seconds"} = 0xad7;
	$Keysyms{"latincross"} = 0xad9;
	$Keysyms{"hexagram"} = 0xada;
	$Keysyms{"filledrectbullet"} = 0xadb;
	$Keysyms{"filledlefttribullet"} = 0xadc;
	$Keysyms{"filledrighttribullet"} = 0xadd;
	$Keysyms{"emfilledcircle"} = 0xade;
	$Keysyms{"emfilledrect"} = 0xadf;
	$Keysyms{"enopencircbullet"} = 0xae0;
	$Keysyms{"enopensquarebullet"} = 0xae1;
	$Keysyms{"openrectbullet"} = 0xae2;
	$Keysyms{"opentribulletup"} = 0xae3;
	$Keysyms{"opentribulletdown"} = 0xae4;
	$Keysyms{"openstar"} = 0xae5;
	$Keysyms{"enfilledcircbullet"} = 0xae6;
	$Keysyms{"enfilledsqbullet"} = 0xae7;
	$Keysyms{"filledtribulletup"} = 0xae8;
	$Keysyms{"filledtribulletdown"} = 0xae9;
	$Keysyms{"leftpointer"} = 0xaea;
	$Keysyms{"rightpointer"} = 0xaeb;
	$Keysyms{"club"} = 0xaec;
	$Keysyms{"diamond"} = 0xaed;
	$Keysyms{"heart"} = 0xaee;
	$Keysyms{"maltesecross"} = 0xaf0;
	$Keysyms{"dagger"} = 0xaf1;
	$Keysyms{"doubledagger"} = 0xaf2;
	$Keysyms{"checkmark"} = 0xaf3;
	$Keysyms{"ballotcross"} = 0xaf4;
	$Keysyms{"musicalsharp"} = 0xaf5;
	$Keysyms{"musicalflat"} = 0xaf6;
	$Keysyms{"malesymbol"} = 0xaf7;
	$Keysyms{"femalesymbol"} = 0xaf8;
	$Keysyms{"telephone"} = 0xaf9;
	$Keysyms{"telephonerecorder"} = 0xafa;
	$Keysyms{"phonographcopyright"} = 0xafb;
	$Keysyms{"caret"} = 0xafc;
	$Keysyms{"singlelowquotemark"} = 0xafd;
	$Keysyms{"doublelowquotemark"} = 0xafe;
	$Keysyms{"cursor"} = 0xaff;
    }
#endif # XK_PUBLISHING 

#
# *  APL
# *  Byte 3 = b
    

#ifdef XK_APL
    if ($KL{'APL'}) {
	$Keysyms{"leftcaret"} = 0xba3;
	$Keysyms{"rightcaret"} = 0xba6;
	$Keysyms{"downcaret"} = 0xba8;
	$Keysyms{"upcaret"} = 0xba9;
	$Keysyms{"overbar"} = 0xbc0;
	$Keysyms{"downtack"} = 0xbc2;
	$Keysyms{"upshoe"} = 0xbc3;
	$Keysyms{"downstile"} = 0xbc4;
	$Keysyms{"underbar"} = 0xbc6;
	$Keysyms{"jot"} = 0xbca;
	$Keysyms{"quad"} = 0xbcc;
	$Keysyms{"uptack"} = 0xbce;
	$Keysyms{"circle"} = 0xbcf;
	$Keysyms{"upstile"} = 0xbd3;
	$Keysyms{"downshoe"} = 0xbd6;
	$Keysyms{"rightshoe"} = 0xbd8;
	$Keysyms{"leftshoe"} = 0xbda;
	$Keysyms{"lefttack"} = 0xbdc;
	$Keysyms{"righttack"} = 0xbfc;
    }
#endif # XK_APL 

#
# * Hebrew
# * Byte 3 = c
    

#ifdef XK_HEBREW
    if ($KL{'HEBREW'}) {
	$Keysyms{"hebrew_doublelowline"} = 0xcdf;
	$Keysyms{"hebrew_aleph"} = 0xce0;
	$Keysyms{"hebrew_bet"} = 0xce1;
	$Keysyms{"hebrew_beth"} = 0xce1;  # deprecated 
	$Keysyms{"hebrew_gimel"} = 0xce2;
	$Keysyms{"hebrew_gimmel"} = 0xce2;  # deprecated 
	$Keysyms{"hebrew_dalet"} = 0xce3;
	$Keysyms{"hebrew_daleth"} = 0xce3;  # deprecated 
	$Keysyms{"hebrew_he"} = 0xce4;
	$Keysyms{"hebrew_waw"} = 0xce5;
	$Keysyms{"hebrew_zain"} = 0xce6;
	$Keysyms{"hebrew_zayin"} = 0xce6;  # deprecated 
	$Keysyms{"hebrew_chet"} = 0xce7;
	$Keysyms{"hebrew_het"} = 0xce7;  # deprecated 
	$Keysyms{"hebrew_tet"} = 0xce8;
	$Keysyms{"hebrew_teth"} = 0xce8;  # deprecated 
	$Keysyms{"hebrew_yod"} = 0xce9;
	$Keysyms{"hebrew_finalkaph"} = 0xcea;
	$Keysyms{"hebrew_kaph"} = 0xceb;
	$Keysyms{"hebrew_lamed"} = 0xcec;
	$Keysyms{"hebrew_finalmem"} = 0xced;
	$Keysyms{"hebrew_mem"} = 0xcee;
	$Keysyms{"hebrew_finalnun"} = 0xcef;
	$Keysyms{"hebrew_nun"} = 0xcf0;
	$Keysyms{"hebrew_samech"} = 0xcf1;
	$Keysyms{"hebrew_samekh"} = 0xcf1;  # deprecated 
	$Keysyms{"hebrew_ayin"} = 0xcf2;
	$Keysyms{"hebrew_finalpe"} = 0xcf3;
	$Keysyms{"hebrew_pe"} = 0xcf4;
	$Keysyms{"hebrew_finalzade"} = 0xcf5;
	$Keysyms{"hebrew_finalzadi"} = 0xcf5;  # deprecated 
	$Keysyms{"hebrew_zade"} = 0xcf6;
	$Keysyms{"hebrew_zadi"} = 0xcf6;  # deprecated 
	$Keysyms{"hebrew_qoph"} = 0xcf7;
	$Keysyms{"hebrew_kuf"} = 0xcf7;  # deprecated 
	$Keysyms{"hebrew_resh"} = 0xcf8;
	$Keysyms{"hebrew_shin"} = 0xcf9;
	$Keysyms{"hebrew_taw"} = 0xcfa;
	$Keysyms{"hebrew_taf"} = 0xcfa;  # deprecated 
	$Keysyms{"Hebrew_switch"} = 0xFF7E;  # Alias for mode_switch 
    }
#endif # XK_HEBREW 

#
# * Thai
# * Byte 3 = d
    

#ifdef XK_THAI
    if ($KL{'THAI'}) {
	$Keysyms{"Thai_kokai"} = 0xda1;
	$Keysyms{"Thai_khokhai"} = 0xda2;
	$Keysyms{"Thai_khokhuat"} = 0xda3;
	$Keysyms{"Thai_khokhwai"} = 0xda4;
	$Keysyms{"Thai_khokhon"} = 0xda5;
	$Keysyms{"Thai_khorakhang"} = 0xda6;  
	$Keysyms{"Thai_ngongu"} = 0xda7;  
	$Keysyms{"Thai_chochan"} = 0xda8;  
	$Keysyms{"Thai_choching"} = 0xda9;   
	$Keysyms{"Thai_chochang"} = 0xdaa;  
	$Keysyms{"Thai_soso"} = 0xdab;
	$Keysyms{"Thai_chochoe"} = 0xdac;
	$Keysyms{"Thai_yoying"} = 0xdad;
	$Keysyms{"Thai_dochada"} = 0xdae;
	$Keysyms{"Thai_topatak"} = 0xdaf;
	$Keysyms{"Thai_thothan"} = 0xdb0;
	$Keysyms{"Thai_thonangmontho"} = 0xdb1;
	$Keysyms{"Thai_thophuthao"} = 0xdb2;
	$Keysyms{"Thai_nonen"} = 0xdb3;
	$Keysyms{"Thai_dodek"} = 0xdb4;
	$Keysyms{"Thai_totao"} = 0xdb5;
	$Keysyms{"Thai_thothung"} = 0xdb6;
	$Keysyms{"Thai_thothahan"} = 0xdb7;
	$Keysyms{"Thai_thothong"} = 0xdb8;
	$Keysyms{"Thai_nonu"} = 0xdb9;
	$Keysyms{"Thai_bobaimai"} = 0xdba;
	$Keysyms{"Thai_popla"} = 0xdbb;
	$Keysyms{"Thai_phophung"} = 0xdbc;
	$Keysyms{"Thai_fofa"} = 0xdbd;
	$Keysyms{"Thai_phophan"} = 0xdbe;
	$Keysyms{"Thai_fofan"} = 0xdbf;
	$Keysyms{"Thai_phosamphao"} = 0xdc0;
	$Keysyms{"Thai_moma"} = 0xdc1;
	$Keysyms{"Thai_yoyak"} = 0xdc2;
	$Keysyms{"Thai_rorua"} = 0xdc3;
	$Keysyms{"Thai_ru"} = 0xdc4;
	$Keysyms{"Thai_loling"} = 0xdc5;
	$Keysyms{"Thai_lu"} = 0xdc6;
	$Keysyms{"Thai_wowaen"} = 0xdc7;
	$Keysyms{"Thai_sosala"} = 0xdc8;
	$Keysyms{"Thai_sorusi"} = 0xdc9;
	$Keysyms{"Thai_sosua"} = 0xdca;
	$Keysyms{"Thai_hohip"} = 0xdcb;
	$Keysyms{"Thai_lochula"} = 0xdcc;
	$Keysyms{"Thai_oang"} = 0xdcd;
	$Keysyms{"Thai_honokhuk"} = 0xdce;
	$Keysyms{"Thai_paiyannoi"} = 0xdcf;
	$Keysyms{"Thai_saraa"} = 0xdd0;
	$Keysyms{"Thai_maihanakat"} = 0xdd1;
	$Keysyms{"Thai_saraaa"} = 0xdd2;
	$Keysyms{"Thai_saraam"} = 0xdd3;
	$Keysyms{"Thai_sarai"} = 0xdd4;   
	$Keysyms{"Thai_saraii"} = 0xdd5;   
	$Keysyms{"Thai_saraue"} = 0xdd6;    
	$Keysyms{"Thai_sarauee"} = 0xdd7;    
	$Keysyms{"Thai_sarau"} = 0xdd8;    
	$Keysyms{"Thai_sarauu"} = 0xdd9;   
	$Keysyms{"Thai_phinthu"} = 0xdda;
	$Keysyms{"Thai_maihanakat_maitho"} = 0xdde;
	$Keysyms{"Thai_baht"} = 0xddf;
	$Keysyms{"Thai_sarae"} = 0xde0;    
	$Keysyms{"Thai_saraae"} = 0xde1;
	$Keysyms{"Thai_sarao"} = 0xde2;
	$Keysyms{"Thai_saraaimaimuan"} = 0xde3;   
	$Keysyms{"Thai_saraaimaimalai"} = 0xde4;  
	$Keysyms{"Thai_lakkhangyao"} = 0xde5;
	$Keysyms{"Thai_maiyamok"} = 0xde6;
	$Keysyms{"Thai_maitaikhu"} = 0xde7;
	$Keysyms{"Thai_maiek"} = 0xde8;   
	$Keysyms{"Thai_maitho"} = 0xde9;
	$Keysyms{"Thai_maitri"} = 0xdea;
	$Keysyms{"Thai_maichattawa"} = 0xdeb;
	$Keysyms{"Thai_thanthakhat"} = 0xdec;
	$Keysyms{"Thai_nikhahit"} = 0xded;
	$Keysyms{"Thai_leksun"} = 0xdf0; 
	$Keysyms{"Thai_leknung"} = 0xdf1;  
	$Keysyms{"Thai_leksong"} = 0xdf2; 
	$Keysyms{"Thai_leksam"} = 0xdf3;
	$Keysyms{"Thai_leksi"} = 0xdf4;  
	$Keysyms{"Thai_lekha"} = 0xdf5;  
	$Keysyms{"Thai_lekhok"} = 0xdf6;  
	$Keysyms{"Thai_lekchet"} = 0xdf7;  
	$Keysyms{"Thai_lekpaet"} = 0xdf8;  
	$Keysyms{"Thai_lekkao"} = 0xdf9; 
    }
#endif # XK_THAI 

#
# *   Korean
# *   Byte 3 = e
    

#ifdef XK_KOREAN
    if ($KL{'KOREAN'}) {
	$Keysyms{"Hangul"} = 0xff31;    # Hangul start/stop(toggle) 
	$Keysyms{"Hangul_Start"} = 0xff32;    # Hangul start 
	$Keysyms{"Hangul_End"} = 0xff33;    # Hangul end, English start 
	$Keysyms{"Hangul_Hanja"} = 0xff34;    # Start Hangul->Hanja Conversion 
	$Keysyms{"Hangul_Jamo"} = 0xff35;    # Hangul Jamo mode 
	$Keysyms{"Hangul_Romaja"} = 0xff36;    # Hangul Romaja mode 
	$Keysyms{"Hangul_Codeinput"} = 0xff37;    # Hangul code input mode 
	$Keysyms{"Hangul_Jeonja"} = 0xff38;    # Jeonja mode 
	$Keysyms{"Hangul_Banja"} = 0xff39;    # Banja mode 
	$Keysyms{"Hangul_PreHanja"} = 0xff3a;    # Pre Hanja conversion 
	$Keysyms{"Hangul_PostHanja"} = 0xff3b;    # Post Hanja conversion 
	$Keysyms{"Hangul_SingleCandidate"} = 0xff3c;    # Single candidate 
	$Keysyms{"Hangul_MultipleCandidate"} = 0xff3d;    # Multiple candidate 
	$Keysyms{"Hangul_PreviousCandidate"} = 0xff3e;    # Previous candidate 
	$Keysyms{"Hangul_Special"} = 0xff3f;    # Special symbols 
	$Keysyms{"Hangul_switch"} = 0xFF7E;    # Alias for mode_switch 

# Hangul Consonant Characters 
	$Keysyms{"Hangul_Kiyeog"} = 0xea1;
	$Keysyms{"Hangul_SsangKiyeog"} = 0xea2;
	$Keysyms{"Hangul_KiyeogSios"} = 0xea3;
	$Keysyms{"Hangul_Nieun"} = 0xea4;
	$Keysyms{"Hangul_NieunJieuj"} = 0xea5;
	$Keysyms{"Hangul_NieunHieuh"} = 0xea6;
	$Keysyms{"Hangul_Dikeud"} = 0xea7;
	$Keysyms{"Hangul_SsangDikeud"} = 0xea8;
	$Keysyms{"Hangul_Rieul"} = 0xea9;
	$Keysyms{"Hangul_RieulKiyeog"} = 0xeaa;
	$Keysyms{"Hangul_RieulMieum"} = 0xeab;
	$Keysyms{"Hangul_RieulPieub"} = 0xeac;
	$Keysyms{"Hangul_RieulSios"} = 0xead;
	$Keysyms{"Hangul_RieulTieut"} = 0xeae;
	$Keysyms{"Hangul_RieulPhieuf"} = 0xeaf;
	$Keysyms{"Hangul_RieulHieuh"} = 0xeb0;
	$Keysyms{"Hangul_Mieum"} = 0xeb1;
	$Keysyms{"Hangul_Pieub"} = 0xeb2;
	$Keysyms{"Hangul_SsangPieub"} = 0xeb3;
	$Keysyms{"Hangul_PieubSios"} = 0xeb4;
	$Keysyms{"Hangul_Sios"} = 0xeb5;
	$Keysyms{"Hangul_SsangSios"} = 0xeb6;
	$Keysyms{"Hangul_Ieung"} = 0xeb7;
	$Keysyms{"Hangul_Jieuj"} = 0xeb8;
	$Keysyms{"Hangul_SsangJieuj"} = 0xeb9;
	$Keysyms{"Hangul_Cieuc"} = 0xeba;
	$Keysyms{"Hangul_Khieuq"} = 0xebb;
	$Keysyms{"Hangul_Tieut"} = 0xebc;
	$Keysyms{"Hangul_Phieuf"} = 0xebd;
	$Keysyms{"Hangul_Hieuh"} = 0xebe;

# Hangul Vowel Characters 
	$Keysyms{"Hangul_A"} = 0xebf;
	$Keysyms{"Hangul_AE"} = 0xec0;
	$Keysyms{"Hangul_YA"} = 0xec1;
	$Keysyms{"Hangul_YAE"} = 0xec2;
	$Keysyms{"Hangul_EO"} = 0xec3;
	$Keysyms{"Hangul_E"} = 0xec4;
	$Keysyms{"Hangul_YEO"} = 0xec5;
	$Keysyms{"Hangul_YE"} = 0xec6;
	$Keysyms{"Hangul_O"} = 0xec7;
	$Keysyms{"Hangul_WA"} = 0xec8;
	$Keysyms{"Hangul_WAE"} = 0xec9;
	$Keysyms{"Hangul_OE"} = 0xeca;
	$Keysyms{"Hangul_YO"} = 0xecb;
	$Keysyms{"Hangul_U"} = 0xecc;
	$Keysyms{"Hangul_WEO"} = 0xecd;
	$Keysyms{"Hangul_WE"} = 0xece;
	$Keysyms{"Hangul_WI"} = 0xecf;
	$Keysyms{"Hangul_YU"} = 0xed0;
	$Keysyms{"Hangul_EU"} = 0xed1;
	$Keysyms{"Hangul_YI"} = 0xed2;
	$Keysyms{"Hangul_I"} = 0xed3;

# Hangul syllable-final (JongSeong) Characters 
	$Keysyms{"Hangul_J_Kiyeog"} = 0xed4;
	$Keysyms{"Hangul_J_SsangKiyeog"} = 0xed5;
	$Keysyms{"Hangul_J_KiyeogSios"} = 0xed6;
	$Keysyms{"Hangul_J_Nieun"} = 0xed7;
	$Keysyms{"Hangul_J_NieunJieuj"} = 0xed8;
	$Keysyms{"Hangul_J_NieunHieuh"} = 0xed9;
	$Keysyms{"Hangul_J_Dikeud"} = 0xeda;
	$Keysyms{"Hangul_J_Rieul"} = 0xedb;
	$Keysyms{"Hangul_J_RieulKiyeog"} = 0xedc;
	$Keysyms{"Hangul_J_RieulMieum"} = 0xedd;
	$Keysyms{"Hangul_J_RieulPieub"} = 0xede;
	$Keysyms{"Hangul_J_RieulSios"} = 0xedf;
	$Keysyms{"Hangul_J_RieulTieut"} = 0xee0;
	$Keysyms{"Hangul_J_RieulPhieuf"} = 0xee1;
	$Keysyms{"Hangul_J_RieulHieuh"} = 0xee2;
	$Keysyms{"Hangul_J_Mieum"} = 0xee3;
	$Keysyms{"Hangul_J_Pieub"} = 0xee4;
	$Keysyms{"Hangul_J_PieubSios"} = 0xee5;
	$Keysyms{"Hangul_J_Sios"} = 0xee6;
	$Keysyms{"Hangul_J_SsangSios"} = 0xee7;
	$Keysyms{"Hangul_J_Ieung"} = 0xee8;
	$Keysyms{"Hangul_J_Jieuj"} = 0xee9;
	$Keysyms{"Hangul_J_Cieuc"} = 0xeea;
	$Keysyms{"Hangul_J_Khieuq"} = 0xeeb;
	$Keysyms{"Hangul_J_Tieut"} = 0xeec;
	$Keysyms{"Hangul_J_Phieuf"} = 0xeed;
	$Keysyms{"Hangul_J_Hieuh"} = 0xeee;

# Ancient Hangul Consonant Characters 
	$Keysyms{"Hangul_RieulYeorinHieuh"} = 0xeef;
	$Keysyms{"Hangul_SunkyeongeumMieum"} = 0xef0;
	$Keysyms{"Hangul_SunkyeongeumPieub"} = 0xef1;
	$Keysyms{"Hangul_PanSios"} = 0xef2;
	$Keysyms{"Hangul_KkogjiDalrinIeung"} = 0xef3;
	$Keysyms{"Hangul_SunkyeongeumPhieuf"} = 0xef4;
	$Keysyms{"Hangul_YeorinHieuh"} = 0xef5;

# Ancient Hangul Vowel Characters 
	$Keysyms{"Hangul_AraeA"} = 0xef6;
	$Keysyms{"Hangul_AraeAE"} = 0xef7;

# Ancient Hangul syllable-final (JongSeong) Characters 
	$Keysyms{"Hangul_J_PanSios"} = 0xef8;
	$Keysyms{"Hangul_J_KkogjiDalrinIeung"} = 0xef9;
	$Keysyms{"Hangul_J_YeorinHieuh"} = 0xefa;

# Korean currency symbol 
	$Keysyms{"Korean_Won"} = 0xeff;
    }
#endif # XK_KOREAN 

}

1;

__END__

=head1 NAME

X11::Keysyms - Perl module for names of X11 keysyms

=head1 SYNOPSIS

  use X11::Keysyms '%Keysyms', qw(MISCELLANY XKB_KEYS LATIN1);
  %Keysyms_name = reverse %Keysyms;
  $ks = $Keysyms{'BackSpace'};
  $name = $Keysysms_name{$ks};

=head1 DESCRIPTION

This module exports a hash mapping the names of X11 keysyms, such
as 'A' or 'Linefeed' or 'Hangul_J_YeorinHieuh', onto the numbers that
represent them. The first argument to 'use' is the name of the variable
the hash should be exported into, and the rest are names of subsets of
the keysysms to export: one or more of 

  'MISCELLANY', 'XKB_KEYS', '3270', 'LATIN1', 'LATIN2',
  'LATIN3', 'LATIN4', 'KATAKANA', 'ARABIC', 'CYRILLIC',
  'GREEK', 'TECHNICAL', 'SPECIAL', 'PUBLISHING', 'APL',
  'HEBREW', 'THAI', 'KOREAN'.

If this list is omitted, the list 

  'MISCELLANY', 'XKB_KEYS', 'LATIN1', 'LATIN2', 'LATIN3',
  'LATIN4', 'GREEK'

is used.

=head1 AUTHOR

This module was generated semi-automatically by Stephen McCamant
(<SMCCAM@cpan.org>) from the header file 'X11/keysymdef.h', distributed by the
X Consortium.

=head1 SEE ALSO

L<perl(1)>,
L<X11::Protocol>,
I<X Window System Protocol (X Version 11)>.

=cut