summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-10-19 21:06:22 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-10-19 21:06:22 (GMT)
commitd622513cebfc12213d08aa8c6f9fa12712776524 (patch)
tree1f3ccd1c4ba72e68e4670c300c4b44c36bd59c19
parentcef82a79e42d453a43dc0b43070acb56187e6237 (diff)
downloadtk-d622513cebfc12213d08aa8c6f9fa12712776524.zip
tk-d622513cebfc12213d08aa8c6f9fa12712776524.tar.gz
tk-d622513cebfc12213d08aa8c6f9fa12712776524.tar.bz2
Add support for parsing/generating U????-forms of keysyms. Add more X11 header-files containing keysym information.
-rw-r--r--generic/tkBind.c57
-rw-r--r--tests/bind.test13
-rw-r--r--win/tkWinKey.c4
-rw-r--r--xlib/X11/DECkeysym.h65
-rw-r--r--xlib/X11/HPkeysym.h164
-rw-r--r--xlib/X11/Sunkeysym.h106
-rwxr-xr-xxlib/X11/XF86keysym.h230
-rw-r--r--xlib/X11/ap_keysym.h51
-rw-r--r--xlib/X11/keysymdef.h233
9 files changed, 659 insertions, 264 deletions
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 7bce979..9efaebe 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -4075,10 +4075,10 @@ HandleEventGenerate(
}
break;
case EVENT_KEYCODE:
- if (Tcl_GetIntFromObj(interp, valuePtr, &number) != TCL_OK) {
- return TCL_ERROR;
- }
if ((flags & KEY) && event.general.xkey.type != MouseWheelEvent) {
+ if (Tcl_GetIntFromObj(interp, valuePtr, &number) != TCL_OK) {
+ return TCL_ERROR;
+ }
event.general.xkey.keycode = number;
} else {
badOpt = 1;
@@ -5191,27 +5191,34 @@ TkStringToKeysym(
#ifdef REDO_KEYSYM_LOOKUP
Tcl_HashEntry *hPtr;
#endif /* REDO_KEYSYM_LOOKUP */
+ int keysym;
if (name[0] & 0x80) {
- int keysym;
size_t len = TkUtfToUniChar(name, &keysym);
if (name[len] == '\0') {
if (keysym == 0x20AC) {
return 0x20AC;
}
- if ((keysym >= 0xA1) && (keysym <= 0xFF)) {
+ if ((unsigned)(keysym - 0xA1) <= 0x5E) {
return keysym;
}
return keysym + 0x1000000;
}
+#ifdef REDO_KEYSYM_LOOKUP
+ } else if ((name[0] == 'U') && ((unsigned)(name[1] - '0') <= 9)) {
+ char *p = (char *)name + 1;
+ keysym = strtol(p, &p, 16);
+ if ((p >= name + 5) && (p <= name + 9) && !*p) {
+ return keysym;
+ }
+#endif
}
#ifdef REDO_KEYSYM_LOOKUP
hPtr = Tcl_FindHashEntry(&keySymTable, name);
if (hPtr) {
return (KeySym) Tcl_GetHashValue(hPtr);
}
- assert(name);
- if (strlen(name) == 1u) {
+ if (((unsigned)(name[0]-1) < 0x7F) && !name[1]) {
KeySym keysym = (KeySym) (unsigned char) name[0];
if (TkKeysymToString(keysym)) {
@@ -5246,35 +5253,30 @@ TkKeysymToString(
{
Tcl_HashEntry *hPtr;
int newEntry;
- char *value;
+ const char *value;
- if ((keysym >= 0xA1) && (keysym <= 0xFF)) {
+ if ((unsigned)(keysym - 0xA1) <= 0x5E) {
keysym += 0x1000000;
} else if (keysym == 0x20AC) {
keysym += 0x1000000;
}
if ((keysym >= 0x1000000) && (keysym <= 0x110FFFF)) {
+ char buf[10];
hPtr = Tcl_CreateHashEntry(&nameTable, INT2PTR(keysym), &newEntry);
- if (Tcl_UniCharIsPrint(keysym-0x1000000)) {
- value = (char *)&Tcl_GetHashValue(hPtr);
- if (newEntry) {
- Tcl_SetHashValue(hPtr, NULL);
- TkUniCharToUtf(keysym - 0x1000000, value);
+ if (newEntry) {
+ if (Tcl_UniCharIsPrint(keysym-0x1000000)) {
+ buf[TkUniCharToUtf(keysym - 0x1000000, buf)] = '\0';
+ } else if (keysym >= 0x1010000) {
+ sprintf(buf, "U%08X", (int)(keysym - 0x1000000));
+ } else {
+ sprintf(buf, "U%04X", (int)(keysym - 0x1000000));
}
- return value;
+ value = Tk_GetUid(buf);
+ Tcl_SetHashValue(hPtr, value);
} else {
- if (newEntry) {
- char *buf = ckalloc(10);
- if (keysym >= 0x1010000) {
- sprintf(buf, "U%08X", (int)(keysym - 0x1000000));
- } else {
- sprintf(buf, "U%04X", (int)(keysym - 0x1000000));
- }
- Tcl_SetHashValue(hPtr, buf);
- return buf;
- }
- return Tcl_GetHashValue(hPtr);
+ value = Tcl_GetHashValue(hPtr);
}
+ return value;
}
#ifdef REDO_KEYSYM_LOOKUP
@@ -5285,9 +5287,6 @@ TkKeysymToString(
}
#endif /* REDO_KEYSYM_LOOKUP */
- if (keysym > (KeySym)0x1008FFFF) {
- return NULL;
- }
return XKeysymToString(keysym);
}
diff --git a/tests/bind.test b/tests/bind.test
index a0df61c..33a621d 100644
--- a/tests/bind.test
+++ b/tests/bind.test
@@ -2220,6 +2220,19 @@ test bind-16.46 {ExpandPercents procedure} -setup {
bind all <Key> $savedBind(All)
unset savedBind
} -result {0 1 2}
+test bind-16.16 {ExpandPercents procedure} -setup {
+ frame .t.f -class Test -width 150 -height 100
+ pack .t.f
+ focus -force .t.f
+ update
+} -body {
+ bind .t.f <Key> {set x "%K"}
+ set x none
+ event generate .t.f <Key> -keysym U000020AC
+ set x
+} -cleanup {
+ destroy .t.f
+} -result \u20AC
test bind-17.1 {event command} -body {
event
diff --git a/win/tkWinKey.c b/win/tkWinKey.c
index 234a158..a0ff736 100644
--- a/win/tkWinKey.c
+++ b/win/tkWinKey.c
@@ -59,8 +59,8 @@ static const KeySym keymap[] = {
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*155 0x9b*/
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*160 0xa0*/
NoSymbol, NoSymbol, NoSymbol, NoSymbol, NoSymbol, /*165 0xa5*/
- NoSymbol, NoSymbol, NoSymbol, XK_XF86AudioMute, XK_XF86AudioLowerVolume, /*170 0xaa*/
- XK_XF86AudioRaiseVolume, XK_XF86AudioNext, XK_XF86AudioPrev, XK_XF86AudioStop, XK_XF86AudioPlay /*175 0xaf*/
+ NoSymbol, NoSymbol, NoSymbol, XF86XK_AudioMute, XF86XK_AudioLowerVolume, /*170 0xaa*/
+ XF86XK_AudioRaiseVolume, XF86XK_AudioNext, XF86XK_AudioPrev, XF86XK_AudioStop, XF86XK_AudioPlay /*175 0xaf*/
};
/*
diff --git a/xlib/X11/DECkeysym.h b/xlib/X11/DECkeysym.h
new file mode 100644
index 0000000..d9e23c4
--- /dev/null
+++ b/xlib/X11/DECkeysym.h
@@ -0,0 +1,65 @@
+/***********************************************************
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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 Open Group 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 Open Group.
+
+
+Copyright 1988 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.
+
+******************************************************************/
+
+/*
+ * DEC private keysyms
+ * (29th bit set)
+ */
+
+/* two-key compose sequence initiators, chosen to map to Latin1 characters */
+
+#define DXK_ring_accent 0x1000FEB0
+#define DXK_circumflex_accent 0x1000FE5E
+#define DXK_cedilla_accent 0x1000FE2C
+#define DXK_acute_accent 0x1000FE27
+#define DXK_grave_accent 0x1000FE60
+#define DXK_tilde 0x1000FE7E
+#define DXK_diaeresis 0x1000FE22
+
+/* special keysym for LK2** "Remove" key on editing keypad */
+
+#define DXK_Remove 0x1000FF00 /* Remove */
diff --git a/xlib/X11/HPkeysym.h b/xlib/X11/HPkeysym.h
new file mode 100644
index 0000000..4a0655a
--- /dev/null
+++ b/xlib/X11/HPkeysym.h
@@ -0,0 +1,164 @@
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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 OPEN GROUP 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 Open Group 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 Open Group.
+
+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 names of Hewlett Packard
+or 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.
+
+HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
+TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. Hewlett-Packard shall not be liable for errors
+contained herein or direct, indirect, special, incidental or
+consequential damages in connection with the furnishing,
+performance, or use of this material.
+
+*/
+
+#ifndef _HPKEYSYM_H
+
+#define _HPKEYSYM_H
+
+#define hpXK_ClearLine 0x1000FF6F
+#define hpXK_InsertLine 0x1000FF70
+#define hpXK_DeleteLine 0x1000FF71
+#define hpXK_InsertChar 0x1000FF72
+#define hpXK_DeleteChar 0x1000FF73
+#define hpXK_BackTab 0x1000FF74
+#define hpXK_KP_BackTab 0x1000FF75
+#define hpXK_Modelock1 0x1000FF48
+#define hpXK_Modelock2 0x1000FF49
+#define hpXK_Reset 0x1000FF6C
+#define hpXK_System 0x1000FF6D
+#define hpXK_User 0x1000FF6E
+#define hpXK_mute_acute 0x100000A8
+#define hpXK_mute_grave 0x100000A9
+#define hpXK_mute_asciicircum 0x100000AA
+#define hpXK_mute_diaeresis 0x100000AB
+#define hpXK_mute_asciitilde 0x100000AC
+#define hpXK_lira 0x100000AF
+#define hpXK_guilder 0x100000BE
+#define hpXK_Ydiaeresis 0x100000EE
+#define hpXK_IO 0x100000EE
+#define hpXK_longminus 0x100000F6
+#define hpXK_block 0x100000FC
+
+
+#ifndef _OSF_Keysyms
+#define _OSF_Keysyms
+
+#define osfXK_Copy 0x1004FF02
+#define osfXK_Cut 0x1004FF03
+#define osfXK_Paste 0x1004FF04
+#define osfXK_BackTab 0x1004FF07
+#define osfXK_BackSpace 0x1004FF08
+#define osfXK_Clear 0x1004FF0B
+#define osfXK_Escape 0x1004FF1B
+#define osfXK_AddMode 0x1004FF31
+#define osfXK_PrimaryPaste 0x1004FF32
+#define osfXK_QuickPaste 0x1004FF33
+#define osfXK_PageLeft 0x1004FF40
+#define osfXK_PageUp 0x1004FF41
+#define osfXK_PageDown 0x1004FF42
+#define osfXK_PageRight 0x1004FF43
+#define osfXK_Activate 0x1004FF44
+#define osfXK_MenuBar 0x1004FF45
+#define osfXK_Left 0x1004FF51
+#define osfXK_Up 0x1004FF52
+#define osfXK_Right 0x1004FF53
+#define osfXK_Down 0x1004FF54
+#define osfXK_EndLine 0x1004FF57
+#define osfXK_BeginLine 0x1004FF58
+#define osfXK_EndData 0x1004FF59
+#define osfXK_BeginData 0x1004FF5A
+#define osfXK_PrevMenu 0x1004FF5B
+#define osfXK_NextMenu 0x1004FF5C
+#define osfXK_PrevField 0x1004FF5D
+#define osfXK_NextField 0x1004FF5E
+#define osfXK_Select 0x1004FF60
+#define osfXK_Insert 0x1004FF63
+#define osfXK_Undo 0x1004FF65
+#define osfXK_Menu 0x1004FF67
+#define osfXK_Cancel 0x1004FF69
+#define osfXK_Help 0x1004FF6A
+#define osfXK_SelectAll 0x1004FF71
+#define osfXK_DeselectAll 0x1004FF72
+#define osfXK_Reselect 0x1004FF73
+#define osfXK_Extend 0x1004FF74
+#define osfXK_Restore 0x1004FF78
+#define osfXK_Delete 0x1004FFFF
+
+#endif /* _OSF_Keysyms */
+
+
+/**************************************************************
+ * The use of the following macros is deprecated.
+ * They are listed below only for backwards compatibility.
+ */
+#define XK_Reset 0x1000FF6C
+#define XK_System 0x1000FF6D
+#define XK_User 0x1000FF6E
+#define XK_ClearLine 0x1000FF6F
+#define XK_InsertLine 0x1000FF70
+#define XK_DeleteLine 0x1000FF71
+#define XK_InsertChar 0x1000FF72
+#define XK_DeleteChar 0x1000FF73
+#define XK_BackTab 0x1000FF74
+#define XK_KP_BackTab 0x1000FF75
+#define XK_Ext16bit_L 0x1000FF76
+#define XK_Ext16bit_R 0x1000FF77
+#define XK_mute_acute 0x100000a8
+#define XK_mute_grave 0x100000a9
+#define XK_mute_asciicircum 0x100000aa
+#define XK_mute_diaeresis 0x100000ab
+#define XK_mute_asciitilde 0x100000ac
+#define XK_lira 0x100000af
+#define XK_guilder 0x100000be
+#ifndef XK_Ydiaeresis
+#define XK_Ydiaeresis 0x100000ee
+#endif
+#define XK_IO 0x100000ee
+#define XK_longminus 0x100000f6
+#define XK_block 0x100000fc
+
+#endif /* _HPKEYSYM_H */
diff --git a/xlib/X11/Sunkeysym.h b/xlib/X11/Sunkeysym.h
new file mode 100644
index 0000000..78d1286
--- /dev/null
+++ b/xlib/X11/Sunkeysym.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 1991, Oracle and/or its affiliates. All rights reserved.
+ *
+ * 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 (including the next
+ * paragraph) 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.
+ */
+/************************************************************
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+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
+OPEN GROUP 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 Open Group 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 Open Group.
+
+***********************************************************/
+
+/*
+ * Floating Accent
+ */
+
+#define SunXK_FA_Grave 0x1005FF00
+#define SunXK_FA_Circum 0x1005FF01
+#define SunXK_FA_Tilde 0x1005FF02
+#define SunXK_FA_Acute 0x1005FF03
+#define SunXK_FA_Diaeresis 0x1005FF04
+#define SunXK_FA_Cedilla 0x1005FF05
+
+/*
+ * Miscellaneous Functions
+ */
+
+#define SunXK_F36 0x1005FF10 /* Labeled F11 */
+#define SunXK_F37 0x1005FF11 /* Labeled F12 */
+
+#define SunXK_Sys_Req 0x1005FF60
+#define SunXK_Print_Screen 0x0000FF61 /* Same as XK_Print */
+
+/*
+ * International & Multi-Key Character Composition
+ */
+
+#define SunXK_Compose 0x0000FF20 /* Same as XK_Multi_key */
+#define SunXK_AltGraph 0x0000FF7E /* Same as XK_Mode_switch */
+
+/*
+ * Cursor Control
+ */
+
+#define SunXK_PageUp 0x0000FF55 /* Same as XK_Prior */
+#define SunXK_PageDown 0x0000FF56 /* Same as XK_Next */
+
+/*
+ * Open Look Functions
+ */
+
+#define SunXK_Undo 0x0000FF65 /* Same as XK_Undo */
+#define SunXK_Again 0x0000FF66 /* Same as XK_Redo */
+#define SunXK_Find 0x0000FF68 /* Same as XK_Find */
+#define SunXK_Stop 0x0000FF69 /* Same as XK_Cancel */
+#define SunXK_Props 0x1005FF70
+#define SunXK_Front 0x1005FF71
+#define SunXK_Copy 0x1005FF72
+#define SunXK_Open 0x1005FF73
+#define SunXK_Paste 0x1005FF74
+#define SunXK_Cut 0x1005FF75
+
+#define SunXK_PowerSwitch 0x1005FF76
+#define SunXK_AudioLowerVolume 0x1005FF77
+#define SunXK_AudioMute 0x1005FF78
+#define SunXK_AudioRaiseVolume 0x1005FF79
+#define SunXK_VideoDegauss 0x1005FF7A
+#define SunXK_VideoLowerBrightness 0x1005FF7B
+#define SunXK_VideoRaiseBrightness 0x1005FF7C
+#define SunXK_PowerSwitchShift 0x1005FF7D
diff --git a/xlib/X11/XF86keysym.h b/xlib/X11/XF86keysym.h
new file mode 100755
index 0000000..dd287e2
--- /dev/null
+++ b/xlib/X11/XF86keysym.h
@@ -0,0 +1,230 @@
+/*
+ * XFree86 vendor specific keysyms.
+ *
+ * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
+ *
+ * X.Org will not be adding to the XF86 set of keysyms, though they have
+ * been adopted and are considered a "standard" part of X keysym definitions.
+ * XFree86 never properly commented these keysyms, so we have done our
+ * best to explain the semantic meaning of these keys.
+ *
+ * XFree86 has removed their mail archives of the period, that might have
+ * shed more light on some of these definitions. Until/unless we resurrect
+ * these archives, these are from memory and usage.
+ */
+
+/*
+ * ModeLock
+ *
+ * This one is old, and not really used any more since XKB offers this
+ * functionality.
+ */
+
+#define XF86XK_ModeLock 0x1008FF01 /* Mode Switch Lock */
+
+/* Backlight controls. */
+#define XF86XK_MonBrightnessUp 0x1008FF02 /* Monitor/panel brightness */
+#define XF86XK_MonBrightnessDown 0x1008FF03 /* Monitor/panel brightness */
+#define XF86XK_KbdLightOnOff 0x1008FF04 /* Keyboards may be lit */
+#define XF86XK_KbdBrightnessUp 0x1008FF05 /* Keyboards may be lit */
+#define XF86XK_KbdBrightnessDown 0x1008FF06 /* Keyboards may be lit */
+#define XF86XK_MonBrightnessCycle 0x1008FF07 /* Monitor/panel brightness */
+
+/*
+ * Keys found on some "Internet" keyboards.
+ */
+#define XF86XK_Standby 0x1008FF10 /* System into standby mode */
+#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
+#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
+#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
+#define XF86XK_AudioPlay 0x1008FF14 /* Start playing of audio > */
+#define XF86XK_AudioStop 0x1008FF15 /* Stop playing audio */
+#define XF86XK_AudioPrev 0x1008FF16 /* Previous track */
+#define XF86XK_AudioNext 0x1008FF17 /* Next track */
+#define XF86XK_HomePage 0x1008FF18 /* Display user's home page */
+#define XF86XK_Mail 0x1008FF19 /* Invoke user's mail program */
+#define XF86XK_Start 0x1008FF1A /* Start application */
+#define XF86XK_Search 0x1008FF1B /* Search */
+#define XF86XK_AudioRecord 0x1008FF1C /* Record audio application */
+
+/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere) */
+#define XF86XK_Calculator 0x1008FF1D /* Invoke calculator program */
+#define XF86XK_Memo 0x1008FF1E /* Invoke Memo taking program */
+#define XF86XK_ToDoList 0x1008FF1F /* Invoke To Do List program */
+#define XF86XK_Calendar 0x1008FF20 /* Invoke Calendar program */
+#define XF86XK_PowerDown 0x1008FF21 /* Deep sleep the system */
+#define XF86XK_ContrastAdjust 0x1008FF22 /* Adjust screen contrast */
+#define XF86XK_RockerUp 0x1008FF23 /* Rocker switches exist up */
+#define XF86XK_RockerDown 0x1008FF24 /* and down */
+#define XF86XK_RockerEnter 0x1008FF25 /* and let you press them */
+
+/* Some more "Internet" keyboard symbols */
+#define XF86XK_Back 0x1008FF26 /* Like back on a browser */
+#define XF86XK_Forward 0x1008FF27 /* Like forward on a browser */
+#define XF86XK_Stop 0x1008FF28 /* Stop current operation */
+#define XF86XK_Refresh 0x1008FF29 /* Refresh the page */
+#define XF86XK_PowerOff 0x1008FF2A /* Power off system entirely */
+#define XF86XK_WakeUp 0x1008FF2B /* Wake up system from sleep */
+#define XF86XK_Eject 0x1008FF2C /* Eject device (e.g. DVD) */
+#define XF86XK_ScreenSaver 0x1008FF2D /* Invoke screensaver */
+#define XF86XK_WWW 0x1008FF2E /* Invoke web browser */
+#define XF86XK_Sleep 0x1008FF2F /* Put system to sleep */
+#define XF86XK_Favorites 0x1008FF30 /* Show favorite locations */
+#define XF86XK_AudioPause 0x1008FF31 /* Pause audio playing */
+#define XF86XK_AudioMedia 0x1008FF32 /* Launch media collection app */
+#define XF86XK_MyComputer 0x1008FF33 /* Display "My Computer" window */
+#define XF86XK_VendorHome 0x1008FF34 /* Display vendor home web site */
+#define XF86XK_LightBulb 0x1008FF35 /* Light bulb keys exist */
+#define XF86XK_Shop 0x1008FF36 /* Display shopping web site */
+#define XF86XK_History 0x1008FF37 /* Show history of web surfing */
+#define XF86XK_OpenURL 0x1008FF38 /* Open selected URL */
+#define XF86XK_AddFavorite 0x1008FF39 /* Add URL to favorites list */
+#define XF86XK_HotLinks 0x1008FF3A /* Show "hot" links */
+#define XF86XK_BrightnessAdjust 0x1008FF3B /* Invoke brightness adj. UI */
+#define XF86XK_Finance 0x1008FF3C /* Display financial site */
+#define XF86XK_Community 0x1008FF3D /* Display user's community */
+#define XF86XK_AudioRewind 0x1008FF3E /* "rewind" audio track */
+#define XF86XK_BackForward 0x1008FF3F /* ??? */
+#define XF86XK_Launch0 0x1008FF40 /* Launch Application */
+#define XF86XK_Launch1 0x1008FF41 /* Launch Application */
+#define XF86XK_Launch2 0x1008FF42 /* Launch Application */
+#define XF86XK_Launch3 0x1008FF43 /* Launch Application */
+#define XF86XK_Launch4 0x1008FF44 /* Launch Application */
+#define XF86XK_Launch5 0x1008FF45 /* Launch Application */
+#define XF86XK_Launch6 0x1008FF46 /* Launch Application */
+#define XF86XK_Launch7 0x1008FF47 /* Launch Application */
+#define XF86XK_Launch8 0x1008FF48 /* Launch Application */
+#define XF86XK_Launch9 0x1008FF49 /* Launch Application */
+#define XF86XK_LaunchA 0x1008FF4A /* Launch Application */
+#define XF86XK_LaunchB 0x1008FF4B /* Launch Application */
+#define XF86XK_LaunchC 0x1008FF4C /* Launch Application */
+#define XF86XK_LaunchD 0x1008FF4D /* Launch Application */
+#define XF86XK_LaunchE 0x1008FF4E /* Launch Application */
+#define XF86XK_LaunchF 0x1008FF4F /* Launch Application */
+
+#define XF86XK_ApplicationLeft 0x1008FF50 /* switch to application, left */
+#define XF86XK_ApplicationRight 0x1008FF51 /* switch to application, right*/
+#define XF86XK_Book 0x1008FF52 /* Launch bookreader */
+#define XF86XK_CD 0x1008FF53 /* Launch CD/DVD player */
+#define XF86XK_Calculater 0x1008FF54 /* Launch Calculater */
+#define XF86XK_Clear 0x1008FF55 /* Clear window, screen */
+#define XF86XK_Close 0x1008FF56 /* Close window */
+#define XF86XK_Copy 0x1008FF57 /* Copy selection */
+#define XF86XK_Cut 0x1008FF58 /* Cut selection */
+#define XF86XK_Display 0x1008FF59 /* Output switch key */
+#define XF86XK_DOS 0x1008FF5A /* Launch DOS (emulation) */
+#define XF86XK_Documents 0x1008FF5B /* Open documents window */
+#define XF86XK_Excel 0x1008FF5C /* Launch spread sheet */
+#define XF86XK_Explorer 0x1008FF5D /* Launch file explorer */
+#define XF86XK_Game 0x1008FF5E /* Launch game */
+#define XF86XK_Go 0x1008FF5F /* Go to URL */
+#define XF86XK_iTouch 0x1008FF60 /* Logitech iTouch- don't use */
+#define XF86XK_LogOff 0x1008FF61 /* Log off system */
+#define XF86XK_Market 0x1008FF62 /* ?? */
+#define XF86XK_Meeting 0x1008FF63 /* enter meeting in calendar */
+#define XF86XK_MenuKB 0x1008FF65 /* distinguish keyboard from PB */
+#define XF86XK_MenuPB 0x1008FF66 /* distinguish PB from keyboard */
+#define XF86XK_MySites 0x1008FF67 /* Favourites */
+#define XF86XK_New 0x1008FF68 /* New (folder, document... */
+#define XF86XK_News 0x1008FF69 /* News */
+#define XF86XK_OfficeHome 0x1008FF6A /* Office home (old Staroffice)*/
+#define XF86XK_Open 0x1008FF6B /* Open */
+#define XF86XK_Option 0x1008FF6C /* ?? */
+#define XF86XK_Paste 0x1008FF6D /* Paste */
+#define XF86XK_Phone 0x1008FF6E /* Launch phone; dial number */
+#define XF86XK_Q 0x1008FF70 /* Compaq's Q - don't use */
+#define XF86XK_Reply 0x1008FF72 /* Reply e.g., mail */
+#define XF86XK_Reload 0x1008FF73 /* Reload web page, file, etc. */
+#define XF86XK_RotateWindows 0x1008FF74 /* Rotate windows e.g. xrandr */
+#define XF86XK_RotationPB 0x1008FF75 /* don't use */
+#define XF86XK_RotationKB 0x1008FF76 /* don't use */
+#define XF86XK_Save 0x1008FF77 /* Save (file, document, state */
+#define XF86XK_ScrollUp 0x1008FF78 /* Scroll window/contents up */
+#define XF86XK_ScrollDown 0x1008FF79 /* Scrool window/contentd down */
+#define XF86XK_ScrollClick 0x1008FF7A /* Use XKB mousekeys instead */
+#define XF86XK_Send 0x1008FF7B /* Send mail, file, object */
+#define XF86XK_Spell 0x1008FF7C /* Spell checker */
+#define XF86XK_SplitScreen 0x1008FF7D /* Split window or screen */
+#define XF86XK_Support 0x1008FF7E /* Get support (??) */
+#define XF86XK_TaskPane 0x1008FF7F /* Show tasks */
+#define XF86XK_Terminal 0x1008FF80 /* Launch terminal emulator */
+#define XF86XK_Tools 0x1008FF81 /* toolbox of desktop/app. */
+#define XF86XK_Travel 0x1008FF82 /* ?? */
+#define XF86XK_UserPB 0x1008FF84 /* ?? */
+#define XF86XK_User1KB 0x1008FF85 /* ?? */
+#define XF86XK_User2KB 0x1008FF86 /* ?? */
+#define XF86XK_Video 0x1008FF87 /* Launch video player */
+#define XF86XK_WheelButton 0x1008FF88 /* button from a mouse wheel */
+#define XF86XK_Word 0x1008FF89 /* Launch word processor */
+#define XF86XK_Xfer 0x1008FF8A
+#define XF86XK_ZoomIn 0x1008FF8B /* zoom in view, map, etc. */
+#define XF86XK_ZoomOut 0x1008FF8C /* zoom out view, map, etc. */
+
+#define XF86XK_Away 0x1008FF8D /* mark yourself as away */
+#define XF86XK_Messenger 0x1008FF8E /* as in instant messaging */
+#define XF86XK_WebCam 0x1008FF8F /* Launch web camera app. */
+#define XF86XK_MailForward 0x1008FF90 /* Forward in mail */
+#define XF86XK_Pictures 0x1008FF91 /* Show pictures */
+#define XF86XK_Music 0x1008FF92 /* Launch music application */
+
+#define XF86XK_Battery 0x1008FF93 /* Display battery information */
+#define XF86XK_Bluetooth 0x1008FF94 /* Enable/disable Bluetooth */
+#define XF86XK_WLAN 0x1008FF95 /* Enable/disable WLAN */
+#define XF86XK_UWB 0x1008FF96 /* Enable/disable UWB */
+
+#define XF86XK_AudioForward 0x1008FF97 /* fast-forward audio track */
+#define XF86XK_AudioRepeat 0x1008FF98 /* toggle repeat mode */
+#define XF86XK_AudioRandomPlay 0x1008FF99 /* toggle shuffle mode */
+#define XF86XK_Subtitle 0x1008FF9A /* cycle through subtitle */
+#define XF86XK_AudioCycleTrack 0x1008FF9B /* cycle through audio tracks */
+#define XF86XK_CycleAngle 0x1008FF9C /* cycle through angles */
+#define XF86XK_FrameBack 0x1008FF9D /* video: go one frame back */
+#define XF86XK_FrameForward 0x1008FF9E /* video: go one frame forward */
+#define XF86XK_Time 0x1008FF9F /* display, or shows an entry for time seeking */
+#define XF86XK_Select 0x1008FFA0 /* Select button on joypads and remotes */
+#define XF86XK_View 0x1008FFA1 /* Show a view options/properties */
+#define XF86XK_TopMenu 0x1008FFA2 /* Go to a top-level menu in a video */
+
+#define XF86XK_Red 0x1008FFA3 /* Red button */
+#define XF86XK_Green 0x1008FFA4 /* Green button */
+#define XF86XK_Yellow 0x1008FFA5 /* Yellow button */
+#define XF86XK_Blue 0x1008FFA6 /* Blue button */
+
+#define XF86XK_Suspend 0x1008FFA7 /* Sleep to RAM */
+#define XF86XK_Hibernate 0x1008FFA8 /* Sleep to disk */
+#define XF86XK_TouchpadToggle 0x1008FFA9 /* Toggle between touchpad/trackstick */
+#define XF86XK_TouchpadOn 0x1008FFB0 /* The touchpad got switched on */
+#define XF86XK_TouchpadOff 0x1008FFB1 /* The touchpad got switched off */
+
+#define XF86XK_AudioMicMute 0x1008FFB2 /* Mute the Mic from the system */
+
+#define XF86XK_Keyboard 0x1008FFB3 /* User defined keyboard related action */
+
+#define XF86XK_WWAN 0x1008FFB4 /* Toggle WWAN (LTE, UMTS, etc.) radio */
+#define XF86XK_RFKill 0x1008FFB5 /* Toggle radios on/off */
+
+#define XF86XK_AudioPreset 0x1008FFB6 /* Select equalizer preset, e.g. theatre-mode */
+
+#define XF86XK_RotationLockToggle 0x1008FFB7 /* Toggle screen rotation lock on/off */
+
+/* Keys for special action keys (hot keys) */
+/* Virtual terminals on some operating systems */
+#define XF86XK_Switch_VT_1 0x1008FE01
+#define XF86XK_Switch_VT_2 0x1008FE02
+#define XF86XK_Switch_VT_3 0x1008FE03
+#define XF86XK_Switch_VT_4 0x1008FE04
+#define XF86XK_Switch_VT_5 0x1008FE05
+#define XF86XK_Switch_VT_6 0x1008FE06
+#define XF86XK_Switch_VT_7 0x1008FE07
+#define XF86XK_Switch_VT_8 0x1008FE08
+#define XF86XK_Switch_VT_9 0x1008FE09
+#define XF86XK_Switch_VT_10 0x1008FE0A
+#define XF86XK_Switch_VT_11 0x1008FE0B
+#define XF86XK_Switch_VT_12 0x1008FE0C
+
+#define XF86XK_Ungrab 0x1008FE20 /* force ungrab */
+#define XF86XK_ClearGrab 0x1008FE21 /* kill application with grab */
+#define XF86XK_Next_VMode 0x1008FE22 /* next video mode available */
+#define XF86XK_Prev_VMode 0x1008FE23 /* prev. video mode available */
+#define XF86XK_LogWindowTree 0x1008FE24 /* print window tree to log */
+#define XF86XK_LogGrabInfo 0x1008FE25 /* print all active grabs to log */
diff --git a/xlib/X11/ap_keysym.h b/xlib/X11/ap_keysym.h
new file mode 100644
index 0000000..76cbde2
--- /dev/null
+++ b/xlib/X11/ap_keysym.h
@@ -0,0 +1,51 @@
+/******************************************************************
+Copyright 1987 by Apollo Computer Inc., Chelmsford, Massachusetts.
+Copyright 1989 by Hewlett-Packard Company.
+
+ All Rights Reserved
+
+Permission to use, duplicate, change, and distribute this software and
+its documentation for any purpose and without fee is granted, provided
+that the above copyright notice appear in such copy and that this
+copyright notice appear in all supporting documentation, and that the
+names of Apollo Computer Inc., the Hewlett-Packard Company, or the X
+Consortium not be used in advertising or publicity pertaining to
+distribution of the software without written prior permission.
+
+HEWLETT-PACKARD MAKES NO WARRANTY OF ANY KIND WITH REGARD
+TO THIS SOFWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. Hewlett-Packard shall not be liable for errors
+contained herein or direct, indirect, special, incidental or
+consequential damages in connection with the furnishing,
+performance, or use of this material.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+******************************************************************/
+
+#define apXK_LineDel 0x1000FF00
+#define apXK_CharDel 0x1000FF01
+#define apXK_Copy 0x1000FF02
+#define apXK_Cut 0x1000FF03
+#define apXK_Paste 0x1000FF04
+#define apXK_Move 0x1000FF05
+#define apXK_Grow 0x1000FF06
+#define apXK_Cmd 0x1000FF07
+#define apXK_Shell 0x1000FF08
+#define apXK_LeftBar 0x1000FF09
+#define apXK_RightBar 0x1000FF0A
+#define apXK_LeftBox 0x1000FF0B
+#define apXK_RightBox 0x1000FF0C
+#define apXK_UpBox 0x1000FF0D
+#define apXK_DownBox 0x1000FF0E
+#define apXK_Pop 0x1000FF0F
+#define apXK_Read 0x1000FF10
+#define apXK_Edit 0x1000FF11
+#define apXK_Save 0x1000FF12
+#define apXK_Exit 0x1000FF13
+#define apXK_Repeat 0x1000FF14
+
+#define apXK_KP_parenleft 0x1000FFA8
+#define apXK_KP_parenright 0x1000FFA9
diff --git a/xlib/X11/keysymdef.h b/xlib/X11/keysymdef.h
index e7cb52a..2431b7f 100644
--- a/xlib/X11/keysymdef.h
+++ b/xlib/X11/keysymdef.h
@@ -1732,236 +1732,3 @@ SOFTWARE.
#define XK_braille_dot_9 0xfff9
#define XK_braille_dot_10 0xfffa
#endif /* XK_BRAILLE */
-
-/* Multimedia keys, defined same as on Linux
- * /usr/include/pkg/libxkbcommon/xkbcommon/xkbcommon-keysyms.h
- */
-
-/*
- * XFree86 vendor specific keysyms.
- *
- * The XFree86 keysym range is 0x10080001 - 0x1008FFFF.
- *
- * X.Org will not be adding to the XF86 set of keysyms, though they have
- * been adopted and are considered a "standard" part of X keysym definitions.
- * XFree86 never properly commented these keysyms, so we have done our
- * best to explain the semantic meaning of these keys.
- *
- * XFree86 has removed their mail archives of the period, that might have
- * shed more light on some of these definitions. Until/unless we resurrect
- * these archives, these are from memory and usage.
- */
-
-/*
- * ModeLock
- *
- * This one is old, and not really used any more since XKB offers this
- * functionality.
- */
-
-#define XF86XK_ModeLock 0x1008FF01 /* Mode Switch Lock */
-
-/* Backlight controls. */
-#define XF86XK_MonBrightnessUp 0x1008FF02 /* Monitor/panel brightness */
-#define XF86XK_MonBrightnessDown 0x1008FF03 /* Monitor/panel brightness */
-#define XF86XK_KbdLightOnOff 0x1008FF04 /* Keyboards may be lit */
-#define XF86XK_KbdBrightnessUp 0x1008FF05 /* Keyboards may be lit */
-#define XF86XK_KbdBrightnessDown 0x1008FF06 /* Keyboards may be lit */
-
-/*
- * Keys found on some "Internet" keyboards.
- */
-#define XF86XK_Standby 0x1008FF10 /* System into standby mode */
-#define XF86XK_AudioLowerVolume 0x1008FF11 /* Volume control down */
-#define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */
-#define XF86XK_AudioRaiseVolume 0x1008FF13 /* Volume control up */
-#define XF86XK_AudioPlay 0x1008FF14 /* Start playing of audio > */
-#define XF86XK_AudioStop 0x1008FF15 /* Stop playing audio */
-#define XF86XK_AudioPrev 0x1008FF16 /* Previous track */
-#define XF86XK_AudioNext 0x1008FF17 /* Next track */
-#define XF86XK_HomePage 0x1008FF18 /* Display user's home page */
-#define XF86XK_Mail 0x1008FF19 /* Invoke user's mail program */
-#define XF86XK_Start 0x1008FF1A /* Start application */
-#define XF86XK_Search 0x1008FF1B /* Search */
-#define XF86XK_AudioRecord 0x1008FF1C /* Record audio application */
-
-/* These are sometimes found on PDA's (e.g. Palm, PocketPC or elsewhere) */
-#define XF86XK_Calculator 0x1008FF1D /* Invoke calculator program */
-#define XF86XK_Memo 0x1008FF1E /* Invoke Memo taking program */
-#define XF86XK_ToDoList 0x1008FF1F /* Invoke To Do List program */
-#define XF86XK_Calendar 0x1008FF20 /* Invoke Calendar program */
-#define XF86XK_PowerDown 0x1008FF21 /* Deep sleep the system */
-#define XF86XK_ContrastAdjust 0x1008FF22 /* Adjust screen contrast */
-#define XF86XK_RockerUp 0x1008FF23 /* Rocker switches exist up */
-#define XF86XK_RockerDown 0x1008FF24 /* and down */
-#define XF86XK_RockerEnter 0x1008FF25 /* and let you press them */
-
-/* Some more "Internet" keyboard symbols */
-#define XF86XK_Back 0x1008FF26 /* Like back on a browser */
-#define XF86XK_Forward 0x1008FF27 /* Like forward on a browser */
-#define XF86XK_Stop 0x1008FF28 /* Stop current operation */
-#define XF86XK_Refresh 0x1008FF29 /* Refresh the page */
-#define XF86XK_PowerOff 0x1008FF2A /* Power off system entirely */
-#define XF86XK_WakeUp 0x1008FF2B /* Wake up system from sleep */
-#define XF86XK_Eject 0x1008FF2C /* Eject device (e.g. DVD) */
-#define XF86XK_ScreenSaver 0x1008FF2D /* Invoke screensaver */
-#define XF86XK_WWW 0x1008FF2E /* Invoke web browser */
-#define XF86XK_Sleep 0x1008FF2F /* Put system to sleep */
-#define XF86XK_Favorites 0x1008FF30 /* Show favorite locations */
-#define XF86XK_AudioPause 0x1008FF31 /* Pause audio playing */
-#define XF86XK_AudioMedia 0x1008FF32 /* Launch media collection app */
-#define XF86XK_MyComputer 0x1008FF33 /* Display "My Computer" window */
-#define XF86XK_VendorHome 0x1008FF34 /* Display vendor home web site */
-#define XF86XK_LightBulb 0x1008FF35 /* Light bulb keys exist */
-#define XF86XK_Shop 0x1008FF36 /* Display shopping web site */
-#define XF86XK_History 0x1008FF37 /* Show history of web surfing */
-#define XF86XK_OpenURL 0x1008FF38 /* Open selected URL */
-#define XF86XK_AddFavorite 0x1008FF39 /* Add URL to favorites list */
-#define XF86XK_HotLinks 0x1008FF3A /* Show "hot" links */
-#define XF86XK_BrightnessAdjust 0x1008FF3B /* Invoke brightness adj. UI */
-#define XF86XK_Finance 0x1008FF3C /* Display financial site */
-#define XF86XK_Community 0x1008FF3D /* Display user's community */
-#define XF86XK_AudioRewind 0x1008FF3E /* "rewind" audio track */
-#define XF86XK_BackForward 0x1008FF3F /* ??? */
-#define XF86XK_Launch0 0x1008FF40 /* Launch Application */
-#define XF86XK_Launch1 0x1008FF41 /* Launch Application */
-#define XF86XK_Launch2 0x1008FF42 /* Launch Application */
-#define XF86XK_Launch3 0x1008FF43 /* Launch Application */
-#define XF86XK_Launch4 0x1008FF44 /* Launch Application */
-#define XF86XK_Launch5 0x1008FF45 /* Launch Application */
-#define XF86XK_Launch6 0x1008FF46 /* Launch Application */
-#define XF86XK_Launch7 0x1008FF47 /* Launch Application */
-#define XF86XK_Launch8 0x1008FF48 /* Launch Application */
-#define XF86XK_Launch9 0x1008FF49 /* Launch Application */
-#define XF86XK_LaunchA 0x1008FF4A /* Launch Application */
-#define XF86XK_LaunchB 0x1008FF4B /* Launch Application */
-#define XF86XK_LaunchC 0x1008FF4C /* Launch Application */
-#define XF86XK_LaunchD 0x1008FF4D /* Launch Application */
-#define XF86XK_LaunchE 0x1008FF4E /* Launch Application */
-#define XF86XK_LaunchF 0x1008FF4F /* Launch Application */
-
-#define XF86XK_ApplicationLeft 0x1008FF50 /* switch to application, left */
-#define XF86XK_ApplicationRight 0x1008FF51 /* switch to application, right*/
-#define XF86XK_Book 0x1008FF52 /* Launch bookreader */
-#define XF86XK_CD 0x1008FF53 /* Launch CD/DVD player */
-#define XF86XK_Calculater 0x1008FF54 /* Launch Calculater */
-#define XF86XK_Clear 0x1008FF55 /* Clear window, screen */
-#define XF86XK_Close 0x1008FF56 /* Close window */
-#define XF86XK_Copy 0x1008FF57 /* Copy selection */
-#define XF86XK_Cut 0x1008FF58 /* Cut selection */
-#define XF86XK_Display 0x1008FF59 /* Output switch key */
-#define XF86XK_DOS 0x1008FF5A /* Launch DOS (emulation) */
-#define XF86XK_Documents 0x1008FF5B /* Open documents window */
-#define XF86XK_Excel 0x1008FF5C /* Launch spread sheet */
-#define XF86XK_Explorer 0x1008FF5D /* Launch file explorer */
-#define XF86XK_Game 0x1008FF5E /* Launch game */
-#define XF86XK_Go 0x1008FF5F /* Go to URL */
-#define XF86XK_iTouch 0x1008FF60 /* Logitch iTouch- don't use */
-#define XF86XK_LogOff 0x1008FF61 /* Log off system */
-#define XF86XK_Market 0x1008FF62 /* ?? */
-#define XF86XK_Meeting 0x1008FF63 /* enter meeting in calendar */
-#define XF86XK_MenuKB 0x1008FF65 /* distingush keyboard from PB */
-#define XF86XK_MenuPB 0x1008FF66 /* distinuish PB from keyboard */
-#define XF86XK_MySites 0x1008FF67 /* Favourites */
-#define XF86XK_New 0x1008FF68 /* New (folder, document... */
-#define XF86XK_News 0x1008FF69 /* News */
-#define XF86XK_OfficeHome 0x1008FF6A /* Office home (old Staroffice)*/
-#define XF86XK_Open 0x1008FF6B /* Open */
-#define XF86XK_Option 0x1008FF6C /* ?? */
-#define XF86XK_Paste 0x1008FF6D /* Paste */
-#define XF86XK_Phone 0x1008FF6E /* Launch phone; dial number */
-#define XF86XK_Q 0x1008FF70 /* Compaq's Q - don't use */
-#define XF86XK_Reply 0x1008FF72 /* Reply e.g., mail */
-#define XF86XK_Reload 0x1008FF73 /* Reload web page, file, etc. */
-#define XF86XK_RotateWindows 0x1008FF74 /* Rotate windows e.g. xrandr */
-#define XF86XK_RotationPB 0x1008FF75 /* don't use */
-#define XF86XK_RotationKB 0x1008FF76 /* don't use */
-#define XF86XK_Save 0x1008FF77 /* Save (file, document, state */
-#define XF86XK_ScrollUp 0x1008FF78 /* Scroll window/contents up */
-#define XF86XK_ScrollDown 0x1008FF79 /* Scrool window/contentd down */
-#define XF86XK_ScrollClick 0x1008FF7A /* Use XKB mousekeys instead */
-#define XF86XK_Send 0x1008FF7B /* Send mail, file, object */
-#define XF86XK_Spell 0x1008FF7C /* Spell checker */
-#define XF86XK_SplitScreen 0x1008FF7D /* Split window or screen */
-#define XF86XK_Support 0x1008FF7E /* Get support (??) */
-#define XF86XK_TaskPane 0x1008FF7F /* Show tasks */
-#define XF86XK_Terminal 0x1008FF80 /* Launch terminal emulator */
-#define XF86XK_Tools 0x1008FF81 /* toolbox of desktop/app. */
-#define XF86XK_Travel 0x1008FF82 /* ?? */
-#define XF86XK_UserPB 0x1008FF84 /* ?? */
-#define XF86XK_User1KB 0x1008FF85 /* ?? */
-#define XF86XK_User2KB 0x1008FF86 /* ?? */
-#define XF86XK_Video 0x1008FF87 /* Launch video player */
-#define XF86XK_WheelButton 0x1008FF88 /* button from a mouse wheel */
-#define XF86XK_Word 0x1008FF89 /* Launch word processor */
-#define XF86XK_Xfer 0x1008FF8A
-#define XF86XK_ZoomIn 0x1008FF8B /* zoom in view, map, etc. */
-#define XF86XK_ZoomOut 0x1008FF8C /* zoom out view, map, etc. */
-
-#define XF86XK_Away 0x1008FF8D /* mark yourself as away */
-#define XF86XK_Messenger 0x1008FF8E /* as in instant messaging */
-#define XF86XK_WebCam 0x1008FF8F /* Launch web camera app. */
-#define XF86XK_MailForward 0x1008FF90 /* Forward in mail */
-#define XF86XK_Pictures 0x1008FF91 /* Show pictures */
-#define XF86XK_Music 0x1008FF92 /* Launch music application */
-
-#define XF86XK_Battery 0x1008FF93 /* Display battery information */
-#define XF86XK_Bluetooth 0x1008FF94 /* Enable/disable Bluetooth */
-#define XF86XK_WLAN 0x1008FF95 /* Enable/disable WLAN */
-#define XF86XK_UWB 0x1008FF96 /* Enable/disable UWB */
-
-#define XF86XK_AudioForward 0x1008FF97 /* fast-forward audio track */
-#define XF86XK_AudioRepeat 0x1008FF98 /* toggle repeat mode */
-#define XF86XK_AudioRandomPlay 0x1008FF99 /* toggle shuffle mode */
-#define XF86XK_Subtitle 0x1008FF9A /* cycle through subtitle */
-#define XF86XK_AudioCycleTrack 0x1008FF9B /* cycle through audio tracks */
-#define XF86XK_CycleAngle 0x1008FF9C /* cycle through angles */
-#define XF86XK_FrameBack 0x1008FF9D /* video: go one frame back */
-#define XF86XK_FrameForward 0x1008FF9E /* video: go one frame forward */
-#define XF86XK_Time 0x1008FF9F /* display, or shows an entry for time seeking */
-#define XF86XK_Select 0x1008FFA0 /* Select button on joypads and remotes */
-#define XF86XK_View 0x1008FFA1 /* Show a view options/properties */
-#define XF86XK_TopMenu 0x1008FFA2 /* Go to a top-level menu in a video */
-
-#define XF86XK_Red 0x1008FFA3 /* Red button */
-#define XF86XK_Green 0x1008FFA4 /* Green button */
-#define XF86XK_Yellow 0x1008FFA5 /* Yellow button */
-#define XF86XK_Blue 0x1008FFA6 /* Blue button */
-
-#define XF86XK_Suspend 0x1008FFA7 /* Sleep to RAM */
-#define XF86XK_Hibernate 0x1008FFA8 /* Sleep to disk */
-#define XF86XK_TouchpadToggle 0x1008FFA9 /* Toggle between touchpad/trackstick */
-#define XF86XK_TouchpadOn 0x1008FFB0 /* The touchpad got switched on */
-#define XF86XK_TouchpadOff 0x1008FFB1 /* The touchpad got switched off */
-
-#define XF86XK_AudioMicMute 0x1008FFB2 /* Mute the Mic from the system */
-
-#define XF86XK_Keyboard 0x1008FFB3 /* User defined keyboard related action */
-
-#define XF86XK_WWAN 0x1008FFB4 /* Toggle WWAN (LTE, UMTS, etc.) radio */
-#define XF86XK_RFKill 0x1008FFB5 /* Toggle radios on/off */
-
-#define XF86XK_AudioPreset 0x1008FFB6 /* Select equalizer preset, e.g. theatre-mode */
-
-/* Keys for special action keys (hot keys) */
-/* Virtual terminals on some operating systems */
-#define XF86XK_Switch_VT_1 0x1008FE01
-#define XF86XK_Switch_VT_2 0x1008FE02
-#define XF86XK_Switch_VT_3 0x1008FE03
-#define XF86XK_Switch_VT_4 0x1008FE04
-#define XF86XK_Switch_VT_5 0x1008FE05
-#define XF86XK_Switch_VT_6 0x1008FE06
-#define XF86XK_Switch_VT_7 0x1008FE07
-#define XF86XK_Switch_VT_8 0x1008FE08
-#define XF86XK_Switch_VT_9 0x1008FE09
-#define XF86XK_Switch_VT_10 0x1008FE0A
-#define XF86XK_Switch_VT_11 0x1008FE0B
-#define XF86XK_Switch_VT_12 0x1008FE0C
-
-#define XF86XK_Ungrab 0x1008FE20 /* force ungrab */
-#define XF86XK_ClearGrab 0x1008FE21 /* kill application with grab */
-#define XF86XK_Next_VMode 0x1008FE22 /* next video mode available */
-#define XF86XK_Prev_VMode 0x1008FE23 /* prev. video mode available */
-#define XF86XK_LogWindowTree 0x1008FE24 /* print window tree to log */
-#define XF86XK_LogGrabInfo 0x1008FE25 /* print all active grabs to log */
-