/* $Header: keysym.h,v 1.5 87/06/13 14:46:25 jg Exp $ */

/***********************************************************
Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
and the Massachusetts Institute of Technology, Cambridge, 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 names of Digital or MIT 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.

******************************************************************/
/*
 * 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.
 */

#define XK←BackSpace		0xFF08	/* back space, back char, ... */
#define XK←Tab                  0xFF09
#define XK←Clear                0xFF0B
#define XK←Linefeed		0xFF0A	/* Linefeed, LF */
#define XK←Return		0xFF0D	/* Return, enter */
#define XK←Pause		0xFF13	/* Pause, hold, scroll lock, ... */
#define XK←Escape               0xFF1B
#define XK←Delete		0xFFFF	/* Delete <>, rubout (previous char)*/



/* International & multi-key character composition */

#define XK←Compose	   	0xFF20	/* Multi-key character compose */
#define XK←Kanji		0xFF21	/* Kanji split-space, Kanji convert, ... */

/* Cursor control & motion */

#define XK←Home                 0xFF50
#define XK←Left			0xFF51	/* Move left, left arrow */
#define XK←Up			0xFF52	/* Move up, up arrow */
#define XK←Right		0xFF53	/* Move right, right arrow */
#define XK←Down			0xFF54	/* Move down, down arrow */
#define XK←Prior		0xFF55	/* Prior, previous <> */
#define XK←Next			0xFF56	/* Next <> */
#define XK←End			0xFF57	/* EOL */
#define XK←Begin		0xFF58	/* BOL */


/* Misc Functions */

#define XK←Select		0xFF60	/* Select, mark */
#define XK←Print                0xFF61
#define XK←Execute		0xFF62	/* Execute, run, do */
#define XK←Insert		0xFF63	/* Insert, insert here */
#define XK←Undo			0xFF65	/* Undo, oops */
#define XK←Redo			0xFF66	/* redo, again */
#define XK←Menu                 0xFF67
#define XK←Find			0xFF68	/* Find, search */
#define XK←Cancel		0xFF69	/* Cancel, stop, abort, exit */
#define XK←Help			0xFF6A	/* Help, ? */
#define XK←Break                0xFF6B

/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */

#define XK←KP←Space		0xFF80	/* space */
#define XK←KP←Tab               0xFF89
#define XK←KP←Enter		0xFF8D	/* enter */
#define XK←KP←F1		0xFF91	/* PF1, KP←A, ... */
#define XK←KP←F2                0xFF92
#define XK←KP←F3                0xFF93
#define XK←KP←F4                0xFF94
#define XK←KP←Equal		0xFFBD	/* equals */
#define XK←KP←Multiply          0xFFAA
#define XK←KP←Add               0xFFAB
#define XK←KP←Separator		0xFFAC	/* separator, often comma */
#define XK←KP←Subtract          0xFFAD
#define XK←KP←Decimal           0xFFAE
#define XK←KP←Divide            0xFFAF

#define XK←KP←0                 0xFFB0
#define XK←KP←1                 0xFFB1
#define XK←KP←2                 0xFFB2
#define XK←KP←3                 0xFFB3
#define XK←KP←4                 0xFFB4
#define XK←KP←5                 0xFFB5
#define XK←KP←6                 0xFFB6
#define XK←KP←7                 0xFFB7
#define XK←KP←8                 0xFFB8
#define XK←KP←9                 0xFFB9



/* Auxilliary Functions */

#define XK←F1                   0xFFC0
#define XK←F2                   0xFFC1
#define XK←F3                   0xFFC2
#define XK←F4                   0xFFC3
#define XK←F5                   0xFFC4
#define XK←F6                   0xFFC5
#define XK←F7                   0xFFC6
#define XK←F8                   0xFFC7
#define XK←F9                   0xFFC8
#define XK←F10                  0xFFC9
#define XK←F11                  0xFFCA
#define XK←F12                  0xFFCB
#define XK←F13                  0xFFCC
#define XK←F14                  0xFFCD
#define XK←F15                  0xFFCE
#define XK←F16                  0xFFCF
#define XK←F17                  0xFFD0
#define XK←F18                  0xFFD1
#define XK←F19                  0xFFD2
#define XK←F20                  0xFFD3

/* Modifiers */

#define XK←Shift←L		0xFFE1	/* Left shift */
#define XK←Shift←R		0xFFE2	/* Right shift */
#define XK←Control←L		0xFFE3	/* Left control */
#define XK←Control←R		0xFFE4	/* Right control */
#define XK←Caps←Lock		0xFFE5	/* Caps lock */
#define XK←Shift←Lock		0xFFE6	/* Shift lock */

#define XK←Meta←L		0xFFE7	/* Left meta */
#define XK←Meta←R		0xFFE8	/* Right meta */
#define XK←Alt←L		0xFFE9	/* Left alt */
#define XK←Alt←R		0xFFEA	/* Right alt */
#define XK←Super←L		0xFFEB	/* Left super */
#define XK←Super←R		0xFFEC	/* Right super */
#define XK←Hyper←L		0xFFED	/* Left hyper */
#define XK←Hyper←R		0xFFEE	/* Right hyper */

/* 
   Latin 1
   Byte 3 = 0
*/

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

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

/*
    Latin 2
    Byte 3 = 1
*/

#define XK←Aogonek             0x1a1            
#define XK←breve               0x1a2            
#define XK←Lstroke             0x1a3            
#define XK←Lcaron              0x1a5            
#define XK←Sacute              0x1a6            
#define XK←Scaron              0x1a9            
#define XK←Scedilla            0x1aa            
#define XK←Tcaron              0x1ab            
#define XK←Zacute              0x1ac            
#define XK←Zcaron              0x1ae            
#define XK←Zabovedot           0x1af            
#define XK←aogonek             0x1b1            
#define XK←ogonek              0x1b2            
#define XK←lstroke             0x1b3            
#define XK←lcaron              0x1b5            
#define XK←sacute              0x1b6            
#define XK←caron               0x1b7            
#define XK←scaron              0x1b9            
#define XK←scedilla            0x1ba            
#define XK←tcaron              0x1bb            
#define XK←zacute              0x1bc            
#define XK←doubleacute         0x1bd            
#define XK←zcaron              0x1be            
#define XK←zabovedot           0x1bf            
#define XK←Racute              0x1c0            
#define XK←Abreve              0x1c3            
#define XK←Cacute              0x1c6            
#define XK←Ccaron              0x1c8            
#define XK←Eogonek             0x1ca            
#define XK←Ecaron              0x1cc            
#define XK←Dcaron              0x1cf            
#define XK←Nacute              0x1d1            
#define XK←Ncaron              0x1d2            
#define XK←Odoubleacute        0x1d5            
#define XK←Rcaron              0x1d8            
#define XK←Uring               0x1d9            
#define XK←Udoubleacute        0x1da            
#define XK←Tcedilla            0x1de            
#define XK←racute              0x1e0            
#define XK←abreve              0x1e3            
#define XK←cacute              0x1e6            
#define XK←ccaron              0x1e8            
#define XK←eogonek             0x1ea            
#define XK←ecaron              0x1ec            
#define XK←dcaron              0x1ef            
#define XK←nacute              0x1f1            
#define XK←ncaron              0x1f2            
#define XK←rcaron              0x1f8            
#define XK←uring               0x1f9            
#define XK←tcedilla            0x1fe            
#define XK←abovedot            0x1ff            

/*
    Latin 3
    Byte 3 = 2
*/

#define XK←Hstroke             0x2a1            
#define XK←Hcircumflex         0x2a6            
#define XK←Iabovedot           0x2a9            
#define XK←Gbreve              0x2ab            
#define XK←Jcircumflex         0x2ac            
#define XK←hcircumflex         0x2b1            
#define XK←hslash              0x2b6            
#define XK←idotless            0x2b9            
#define XK←gbreve              0x2bb            
#define XK←jcircumflex         0x2bc            
#define XK←Cabovedot           0x2c5            
#define XK←Ccircumflex         0x2c6            
#define XK←Gabovedot           0x2d5            
#define XK←Gcircumflex         0x2d8            
#define XK←Ubreve              0x2dd            
#define XK←Wcircumflex         0x2de            
#define XK←sgernamsharp        0x2df            
#define XK←cabovedot           0x2e5            
#define XK←ccircumflex         0x2e6            
#define XK←gabovedot           0x2f5            
#define XK←gcircumflex         0x2f8            
#define XK←ubreve              0x2fd            
#define XK←scircumflex         0x2fe            


/*
    Latin 4
    Byte 3 = 3
*/

#define XK←kappa               0x3a2            
#define XK←Rcedilla            0x3a3            
#define XK←Itilde              0x3a5            
#define XK←Lcedilla            0x3a6            
#define XK←Emacron             0x3aa            
#define XK←Gcedilla            0x3ab            
#define XK←Tslash              0x3ac            
#define XK←rcedilla            0x3b3            
#define XK←itilde              0x3b5            
#define XK←lcedilla            0x3b6            
#define XK←emacron             0x3ba            
#define XK←gacute              0x3bb            
#define XK←tslash              0x3bc            
#define XK←ENG                 0x3bd            
#define XK←eng                 0x3bf            
#define XK←Amacron             0x3c0            
#define XK←Iogonek             0x3c7            
#define XK←Eabovedot           0x3cc            
#define XK←Imacron             0x3cf            
#define XK←Ncedilla            0x3d1            
#define XK←Omacron             0x3d2            
#define XK←Kcedilla            0x3d3            
#define XK←Uogonek             0x3d9            
#define XK←Utilde              0x3dd            
#define XK←Umacron             0x3de            
#define XK←amacron             0x3e0            
#define XK←iogonek             0x3e7            
#define XK←eabovedot           0x3ec            
#define XK←imacron             0x3ef            
#define XK←ncedilla            0x3f1            
#define XK←omacron             0x3f2            
#define XK←kcedilla            0x3f3            
#define XK←uogonek             0x3f9            
#define XK←utilde              0x3fd            
#define XK←umacron             0x3fe