package vendor:x11/xlib

⌘K
Ctrl+K
or
/

    Overview

    Bindings for X11's Xlib (PDF).

    Index

    Types (379)
    Constants (56)
    Variables (0)

    This section is empty.

    Procedures (470)
    Procedure Groups (0)

    This section is empty.

    Types

    AccessControlMode ¶

    AccessControlMode :: enum i32 {
    	DisableAccess = 0, 
    	EnableAccess  = 1, 
    }
    Related Procedures With Parameters

    AllowEventsMode ¶

    AllowEventsMode :: enum i32 {
    	AsyncPointer   = 0, 
    	SyncPointer    = 1, 
    	ReplayPointer  = 2, 
    	AsyncKeyboard  = 3, 
    	SyncKeyboard   = 4, 
    	ReplayKeyboard = 5, 
    	AsyncBoth      = 6, 
    	SyncBoth       = 7, 
    }
    Related Procedures With Parameters

    ArcMode ¶

    ArcMode :: enum i32 {
    	ArcChord    = 0, 
    	ArcPieSlice = 1, 
    }
    Related Procedures With Parameters

    BackingStore ¶

    BackingStore :: enum i32 {
    	NotUseful  = 0, 
    	WhenMapped = 1, 
    	Always     = 2, 
    }
    Related Procedures With Returns

    ByteOrder ¶

    ByteOrder :: enum i32 {
    	LSBFirst = 0, 
    	MSBFirst = 1, 
    }
    Related Procedures With Returns

    CapStyle ¶

    CapStyle :: enum i32 {
    	CapNotLast    = 0, 
    	CapButt       = 1, 
    	CapRound      = 2, 
    	CapProjecting = 3, 
    }
    Related Procedures With Parameters

    CirculationDirection ¶

    CirculationDirection :: enum i32 {
    	RaiseLowest  = 0, 
    	LowerHighest = 1, 
    }
    Related Procedures With Parameters

    CirculationRequest ¶

    CirculationRequest :: enum i32 {
    	PlaceOnTop    = 0, 
    	PlaceOnBottom = 1, 
    }

    CloseMode ¶

    CloseMode :: enum i32 {
    	DestroyAll      = 0, 
    	RetainPermanent = 1, 
    	RetainTemporary = 2, 
    }
    Related Procedures With Parameters

    ColorFlags ¶

    ColorFlags :: bit_set[ColorFlagsBits; i32]
    Related Procedures With Parameters

    ColorFlagsBits ¶

    ColorFlagsBits :: enum int {
    	DoRed   = 0, 
    	DoGreen = 1, 
    	DoBlue  = 2, 
    }

    ColorFormat ¶

    ColorFormat :: enum u32 {
    	XcmsUndefinedFormat = 0x00000000, 
    	XcmsCIEXYZFormat    = 0x00000001, 
    	XcmsCIEuvYFormat    = 0x00000002, 
    	XcmsCIExyYFormat    = 0x00000003, 
    	XcmsCIELabFormat    = 0x00000004, 
    	XcmsCIELuvFormat    = 0x00000005, 
    	XcmsTekHVCFormat    = 0x00000006, 
    	XcmsRGBFormat       = 0x80000000, 
    	XcmsRGBiFormat      = 0x80000001, 
    }

    Colormap ¶

    Colormap :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    ColormapAlloc ¶

    ColormapAlloc :: enum i32 {
    	AllocNone = 0, 
    	AllocAll  = 1, 
    }
    Related Procedures With Parameters

    ColormapState ¶

    ColormapState :: enum i32 {
    	ColormapUninstalled = 0, 
    	ColormapInstalled   = 1, 
    }

    Connection ¶

    Connection :: enum u16 {
    	RR_Connected         = 0, 
    	RR_Disconnected      = 1, 
    	RR_UnknownConnection = 2, 
    }

    CoordMode ¶

    CoordMode :: enum i32 {
    	CoordModeOrigin   = 0, 
    	CoordModePrevious = 1, 
    }
    Related Procedures With Parameters

    Cursor ¶

    Cursor :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    CursorImage ¶

    CursorImage :: struct {
    	version: u32,
    	size:    u32,
    	width:   u32,
    	height:  u32,
    	xhot:    u32,
    	yhot:    u32,
    	delay:   u32,
    	pixels:  ^u32,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    CursorShape ¶

    CursorShape :: enum u32 {
    	XC_X_cursor            = 0, 
    	XC_arrow               = 2, 
    	XC_based_arrow_down    = 4, 
    	XC_based_arrow_up      = 6, 
    	XC_boat                = 8, 
    	XC_bogosity            = 10, 
    	XC_bottom_left_corner  = 12, 
    	XC_bottom_right_corner = 14, 
    	XC_bottom_side         = 16, 
    	XC_bottom_tee          = 18, 
    	XC_box_spiral          = 20, 
    	XC_center_ptr          = 22, 
    	XC_circle              = 24, 
    	XC_clock               = 26, 
    	XC_coffee_mug          = 28, 
    	XC_cross               = 30, 
    	XC_cross_reverse       = 32, 
    	XC_crosshair           = 34, 
    	XC_diamond_cross       = 36, 
    	XC_dot                 = 38, 
    	XC_dotbox              = 40, 
    	XC_double_arrow        = 42, 
    	XC_draft_large         = 44, 
    	XC_draft_small         = 46, 
    	XC_draped_box          = 48, 
    	XC_exchange            = 50, 
    	XC_fleur               = 52, 
    	XC_gobbler             = 54, 
    	XC_gumby               = 56, 
    	XC_hand1               = 58, 
    	XC_hand2               = 60, 
    	XC_heart               = 62, 
    	XC_icon                = 64, 
    	XC_iron_cross          = 66, 
    	XC_left_ptr            = 68, 
    	XC_left_side           = 70, 
    	XC_left_tee            = 72, 
    	XC_leftbutton          = 74, 
    	XC_ll_angle            = 76, 
    	XC_lr_angle            = 78, 
    	XC_man                 = 80, 
    	XC_middlebutton        = 82, 
    	XC_mouse               = 84, 
    	XC_pencil              = 86, 
    	XC_pirate              = 88, 
    	XC_plus                = 90, 
    	XC_question_arrow      = 92, 
    	XC_right_ptr           = 94, 
    	XC_right_side          = 96, 
    	XC_right_tee           = 98, 
    	XC_rightbutton         = 100, 
    	XC_rtl_logo            = 102, 
    	XC_sailboat            = 104, 
    	XC_sb_down_arrow       = 106, 
    	XC_sb_h_double_arrow   = 108, 
    	XC_sb_left_arrow       = 110, 
    	XC_sb_right_arrow      = 112, 
    	XC_sb_up_arrow         = 114, 
    	XC_sb_v_double_arrow   = 116, 
    	XC_shuttle             = 118, 
    	XC_sizing              = 120, 
    	XC_spider              = 122, 
    	XC_spraycan            = 124, 
    	XC_star                = 126, 
    	XC_target              = 128, 
    	XC_tcross              = 130, 
    	XC_top_left_arrow      = 132, 
    	XC_top_left_corner     = 134, 
    	XC_top_right_corner    = 136, 
    	XC_top_side            = 138, 
    	XC_top_tee             = 140, 
    	XC_trek                = 142, 
    	XC_ul_angle            = 144, 
    	XC_umbrella            = 146, 
    	XC_ur_angle            = 148, 
    	XC_watch               = 150, 
    	XC_xterm               = 152, 
    	XC_num_glyphs          = 154, 
    }
    Related Procedures With Parameters

    Depth ¶

    Depth :: struct {
    	depth:    i32,
    	nvisuals: i32,
    	visuals:  ^Visual,
    }

    Display ¶

    Display :: struct {}
    Related Procedures With Parameters
    Related Procedures With Returns

    Drawable ¶

    Drawable :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    EventMaskBits ¶

    EventMaskBits :: enum i32 {
    	KeyPress             = 0, 
    	KeyRelease           = 1, 
    	ButtonPress          = 2, 
    	ButtonRelease        = 3, 
    	EnterWindow          = 4, 
    	LeaveWindow          = 5, 
    	PointerMotion        = 6, 
    	PointerMotionHint    = 7, 
    	Button1Motion        = 8, 
    	Button2Motion        = 9, 
    	Button3Motion        = 10, 
    	Button4Motion        = 11, 
    	Button5Motion        = 12, 
    	ButtonMotion         = 13, 
    	KeymapState          = 14, 
    	Exposure             = 15, 
    	VisibilityChange     = 16, 
    	StructureNotify      = 17, 
    	ResizeRedirect       = 18, 
    	SubstructureNotify   = 19, 
    	SubstructureRedirect = 20, 
    	FocusChange          = 21, 
    	PropertyChange       = 22, 
    	ColormapChange       = 23, 
    	OwnerGrabButton      = 24, 
    }

    EventQueueMode ¶

    EventQueueMode :: enum i32 {
    	QueuedAlready      = 0, 
    	QueuedAfterReading = 1, 
    	QueuedAfterFlush   = 2, 
    }
    Related Procedures With Parameters

    EventType ¶

    EventType :: enum i32 {
    	KeyPress         = 2, 
    	KeyRelease       = 3, 
    	ButtonPress      = 4, 
    	ButtonRelease    = 5, 
    	MotionNotify     = 6, 
    	EnterNotify      = 7, 
    	LeaveNotify      = 8, 
    	FocusIn          = 9, 
    	FocusOut         = 10, 
    	KeymapNotify     = 11, 
    	Expose           = 12, 
    	GraphicsExpose   = 13, 
    	NoExpose         = 14, 
    	VisibilityNotify = 15, 
    	CreateNotify     = 16, 
    	DestroyNotify    = 17, 
    	UnmapNotify      = 18, 
    	MapNotify        = 19, 
    	MapRequest       = 20, 
    	ReparentNotify   = 21, 
    	ConfigureNotify  = 22, 
    	ConfigureRequest = 23, 
    	GravityNotify    = 24, 
    	ResizeRequest    = 25, 
    	CirculateNotify  = 26, 
    	CirculateRequest = 27, 
    	PropertyNotify   = 28, 
    	SelectionClear   = 29, 
    	SelectionRequest = 30, 
    	SelectionNotify  = 31, 
    	ColormapNotify   = 32, 
    	ClientMessage    = 33, 
    	MappingNotify    = 34, 
    	GenericEvent     = 35, 
    }
    Related Procedures With Parameters

    FillRule ¶

    FillRule :: enum i32 {
    	EvenOddRule = 0, 
    	WindingRule = 1, 
    }
    Related Procedures With Parameters

    FillStyle ¶

    FillStyle :: enum i32 {
    	FillSolid          = 0, 
    	FillTiled          = 1, 
    	FillStippled       = 2, 
    	FillOpaqueStippled = 3, 
    }
    Related Procedures With Parameters

    FocusRevert ¶

    FocusRevert :: enum i32 {
    	RevertToNone        = 0, 
    	RevertToPointerRoot = 1, 
    	RevertToParent      = 2, 
    }
    Related Procedures With Parameters

    Font ¶

    Font :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    FontDirection ¶

    FontDirection :: enum i32 {
    	FontLeftToRight = 0, 
    	FontRightToLeft = 1, 
    }
    Related Procedures With Parameters

    GCAttributeMask ¶

    GCAttributeMask :: bit_set[GCAttributeMaskBits; uint]
    Related Procedures With Parameters

    GCAttributeMaskBits ¶

    GCAttributeMaskBits :: enum int {
    	GCFunction          = 0, 
    	GCPlaneMask         = 1, 
    	GCForeground        = 2, 
    	GCBackground        = 3, 
    	GCLineWidth         = 4, 
    	GCLineStyle         = 5, 
    	GCCapStyle          = 6, 
    	GCJoinStyle         = 7, 
    	GCFillStyle         = 8, 
    	GCFillRule          = 9, 
    	GCTile              = 10, 
    	GCStipple           = 11, 
    	GCTileStipXOrigin   = 12, 
    	GCTileStipYOrigin   = 13, 
    	GCFont              = 14, 
    	GCSubwindowMode     = 15, 
    	GCGraphicsExposures = 16, 
    	GCClipXOrigin       = 17, 
    	GCClipYOrigin       = 18, 
    	GCClipMask          = 19, 
    	GCDashOffset        = 20, 
    	GCDashList          = 21, 
    	GCArcMode           = 22, 
    }

    GCFunction ¶

    GCFunction :: enum i32 {
    	GXclear        = 0x0, // 0
    	GXand          = 0x1, // src & dst
    	GXandReverse   = 0x2, // src & ~dst
    	GXcopy         = 0x3, // src
    	GXandInverted  = 0x4, // ~src & dst
    	GXnoop         = 0x5, // dst
    	GXxor          = 0x6, // src ~ dst
    	GXor           = 0x7, // src | dst
    	GXnor          = 0x8, // ~src & ~dst
    	GXequiv        = 0x9, // ~src ~ dst
    	GXinvert       = 0xa, // ~dst
    	GXorReverse    = 0xb, // src | ~dst
    	GXcopyInverted = 0xc, // ~src
    	GXorInverted   = 0xd, // ~src | dst
    	GXnand         = 0xe, // ~src | ~dst
    	GXset          = 0xf, // 1
    }
    Related Procedures With Parameters

    GContext ¶

    GContext :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    GrabMode ¶

    GrabMode :: enum i32 {
    	GrabModeSync  = 0, 
    	GrabModeAsync = 1, 
    }
    Related Procedures With Parameters

    Gravity ¶

    Gravity :: enum i32 {
    	ForgetGravity    = 0, 
    	UnmapGravity     = 0, 
    	NorthWestGravity = 1, 
    	NorthGravity     = 2, 
    	NorthEastGravity = 3, 
    	WestGravity      = 4, 
    	CenterGravity    = 5, 
    	EastGravity      = 6, 
    	SouthWestGravity = 7, 
    	SouthGravity     = 8, 
    	SouthEastGravity = 9, 
    	StaticGravity    = 10, 
    }
    Related Procedures With Parameters

    ImageFormat ¶

    ImageFormat :: enum i32 {
    	XYBitmap = 0, 
    	XYPixmap = 1, 
    	ZPixmap  = 2, 
    }
    Related Procedures With Parameters

    InputMask ¶

    InputMask :: bit_set[InputMaskBits; i32]
    Related Procedures With Parameters

    InputMaskBits ¶

    InputMaskBits :: enum int {
    	ShiftMask   = 0, 
    	LockMask    = 1, 
    	ControlMask = 2, 
    	Mod1Mask    = 3, 
    	Mod2Mask    = 4, 
    	Mod3Mask    = 5, 
    	Mod4Mask    = 6, 
    	Mod5Mask    = 7, 
    	Button1Mask = 8, 
    	Button2Mask = 9, 
    	Button3Mask = 10, 
    	Button4Mask = 11, 
    	Button5Mask = 12, 
    	AnyModifier = 15, 
    }

    JoinStyle ¶

    JoinStyle :: enum i32 {
    	JoinMiter = 0, 
    	JoinRound = 1, 
    	JoinBevel = 2, 
    }
    Related Procedures With Parameters

    KeyMask ¶

    KeyMask :: enum u32 {
    	ShiftMask   = 0, 
    	LockMask    = 1, 
    	ControlMask = 2, 
    	Mod1Mask    = 3, 
    	Mod2Mask    = 4, 
    	Mod3Mask    = 5, 
    	Mod4Mask    = 6, 
    	Mod5Mask    = 7, 
    }
    Related Procedures With Parameters

    KeySym ¶

    KeySym :: enum uint {
    	XK_BackSpace                   = 0xff08,    // Back space, back char
    	XK_Tab                         = 0xff09, 
    	XK_Linefeed                    = 0xff0a,    // Linefeed, LF
    	XK_Clear                       = 0xff0b, 
    	XK_Return                      = 0xff0d,    // Return, enter
    	XK_Pause                       = 0xff13,    // Pause, hold
    	XK_Scroll_Lock                 = 0xff14, 
    	XK_Sys_Req                     = 0xff15, 
    	XK_Escape                      = 0xff1b, 
    	XK_Delete                      = 0xffff,    // Delete, rubout
    	XK_Multi_key                   = 0xff20,    // Multi-key character compose
    	XK_Codeinput                   = 0xff37, 
    	XK_SingleCandidate             = 0xff3c, 
    	XK_MultipleCandidate           = 0xff3d, 
    	XK_PreviousCandidate           = 0xff3e, 
    	XK_Kanji                       = 0xff21,    // Kanji, Kanji convert
    	XK_Muhenkan                    = 0xff22,    // Cancel Conversion
    	XK_Henkan_Mode                 = 0xff23,    // Start/Stop Conversion
    	XK_Henkan                      = 0xff23,    // Alias for Henkan_Mode
    	XK_Romaji                      = 0xff24,    // to Romaji
    	XK_Hiragana                    = 0xff25,    // to Hiragana
    	XK_Katakana                    = 0xff26,    // to Katakana
    	XK_Hiragana_Katakana           = 0xff27,    // Hiragana/Katakana toggle
    	XK_Zenkaku                     = 0xff28,    // to Zenkaku
    	XK_Hankaku                     = 0xff29,    // to Hankaku
    	XK_Zenkaku_Hankaku             = 0xff2a,    // Zenkaku/Hankaku toggle
    	XK_Touroku                     = 0xff2b,    // Add to Dictionary
    	XK_Massyo                      = 0xff2c,    // Delete from Dictionary
    	XK_Kana_Lock                   = 0xff2d,    // Kana Lock
    	XK_Kana_Shift                  = 0xff2e,    // Kana Shift
    	XK_Eisu_Shift                  = 0xff2f,    // Alphanumeric Shift
    	XK_Eisu_toggle                 = 0xff30,    // Alphanumeric toggle
    	XK_Kanji_Bangou                = 0xff37,    // Codeinput
    	XK_Zen_Koho                    = 0xff3d,    // Multiple/All Candidate(s)
    	XK_Mae_Koho                    = 0xff3e,    // Previous Candidate
    	XK_Home                        = 0xff50, 
    	XK_Left                        = 0xff51,    // Move left, left arrow
    	XK_Up                          = 0xff52,    // Move up, up arrow
    	XK_Right                       = 0xff53,    // Move right, right arrow
    	XK_Down                        = 0xff54,    // Move down, down arrow
    	XK_Prior                       = 0xff55,    // Prior, previous
    	XK_Page_Up                     = 0xff55, 
    	XK_Next                        = 0xff56,    // Next
    	XK_Page_Down                   = 0xff56, 
    	XK_End                         = 0xff57,    // EOL
    	XK_Begin                       = 0xff58,    // BOL
    	XK_Select                      = 0xff60,    // Select, mark
    	XK_Print                       = 0xff61, 
    	XK_Execute                     = 0xff62,    // Execute, run, do
    	XK_Insert                      = 0xff63,    // Insert, insert here
    	XK_Undo                        = 0xff65, 
    	XK_Redo                        = 0xff66,    // Redo, again
    	XK_Menu                        = 0xff67, 
    	XK_Find                        = 0xff68,    // Find, search
    	XK_Cancel                      = 0xff69,    // Cancel, stop, abort, exit
    	XK_Help                        = 0xff6a,    // Help
    	XK_Break                       = 0xff6b, 
    	XK_Mode_switch                 = 0xff7e,    // Character set switch
    	XK_script_switch               = 0xff7e,    // Alias for mode_switch
    	XK_Num_Lock                    = 0xff7f, 
    	XK_KP_Space                    = 0xff80,    // Space
    	XK_KP_Tab                      = 0xff89, 
    	XK_KP_Enter                    = 0xff8d,    // Enter
    	XK_KP_F1                       = 0xff91,    // PF1, KP_A, ...
    	XK_KP_F2                       = 0xff92, 
    	XK_KP_F3                       = 0xff93, 
    	XK_KP_F4                       = 0xff94, 
    	XK_KP_Home                     = 0xff95, 
    	XK_KP_Left                     = 0xff96, 
    	XK_KP_Up                       = 0xff97, 
    	XK_KP_Right                    = 0xff98, 
    	XK_KP_Down                     = 0xff99, 
    	XK_KP_Prior                    = 0xff9a, 
    	XK_KP_Page_Up                  = 0xff9a, 
    	XK_KP_Next                     = 0xff9b, 
    	XK_KP_Page_Down                = 0xff9b, 
    	XK_KP_End                      = 0xff9c, 
    	XK_KP_Begin                    = 0xff9d, 
    	XK_KP_Insert                   = 0xff9e, 
    	XK_KP_Delete                   = 0xff9f, 
    	XK_KP_Equal                    = 0xffbd,    // Equals
    	XK_KP_Multiply                 = 0xffaa, 
    	XK_KP_Add                      = 0xffab, 
    	XK_KP_Separator                = 0xffac,    // Separator, often comma
    	XK_KP_Subtract                 = 0xffad, 
    	XK_KP_Decimal                  = 0xffae, 
    	XK_KP_Divide                   = 0xffaf, 
    	XK_KP_0                        = 0xffb0, 
    	XK_KP_1                        = 0xffb1, 
    	XK_KP_2                        = 0xffb2, 
    	XK_KP_3                        = 0xffb3, 
    	XK_KP_4                        = 0xffb4, 
    	XK_KP_5                        = 0xffb5, 
    	XK_KP_6                        = 0xffb6, 
    	XK_KP_7                        = 0xffb7, 
    	XK_KP_8                        = 0xffb8, 
    	XK_KP_9                        = 0xffb9, 
    	XK_F1                          = 0xffbe, 
    	XK_F2                          = 0xffbf, 
    	XK_F3                          = 0xffc0, 
    	XK_F4                          = 0xffc1, 
    	XK_F5                          = 0xffc2, 
    	XK_F6                          = 0xffc3, 
    	XK_F7                          = 0xffc4, 
    	XK_F8                          = 0xffc5, 
    	XK_F9                          = 0xffc6, 
    	XK_F10                         = 0xffc7, 
    	XK_F11                         = 0xffc8, 
    	XK_L1                          = 0xffc8, 
    	XK_F12                         = 0xffc9, 
    	XK_L2                          = 0xffc9, 
    	XK_F13                         = 0xffca, 
    	XK_L3                          = 0xffca, 
    	XK_F14                         = 0xffcb, 
    	XK_L4                          = 0xffcb, 
    	XK_F15                         = 0xffcc, 
    	XK_L5                          = 0xffcc, 
    	XK_F16                         = 0xffcd, 
    	XK_L6                          = 0xffcd, 
    	XK_F17                         = 0xffce, 
    	XK_L7                          = 0xffce, 
    	XK_F18                         = 0xffcf, 
    	XK_L8                          = 0xffcf, 
    	XK_F19                         = 0xffd0, 
    	XK_L9                          = 0xffd0, 
    	XK_F20                         = 0xffd1, 
    	XK_L10                         = 0xffd1, 
    	XK_F21                         = 0xffd2, 
    	XK_R1                          = 0xffd2, 
    	XK_F22                         = 0xffd3, 
    	XK_R2                          = 0xffd3, 
    	XK_F23                         = 0xffd4, 
    	XK_R3                          = 0xffd4, 
    	XK_F24                         = 0xffd5, 
    	XK_R4                          = 0xffd5, 
    	XK_F25                         = 0xffd6, 
    	XK_R5                          = 0xffd6, 
    	XK_F26                         = 0xffd7, 
    	XK_R6                          = 0xffd7, 
    	XK_F27                         = 0xffd8, 
    	XK_R7                          = 0xffd8, 
    	XK_F28                         = 0xffd9, 
    	XK_R8                          = 0xffd9, 
    	XK_F29                         = 0xffda, 
    	XK_R9                          = 0xffda, 
    	XK_F30                         = 0xffdb, 
    	XK_R10                         = 0xffdb, 
    	XK_F31                         = 0xffdc, 
    	XK_R11                         = 0xffdc, 
    	XK_F32                         = 0xffdd, 
    	XK_R12                         = 0xffdd, 
    	XK_F33                         = 0xffde, 
    	XK_R13                         = 0xffde, 
    	XK_F34                         = 0xffdf, 
    	XK_R14                         = 0xffdf, 
    	XK_F35                         = 0xffe0, 
    	XK_R15                         = 0xffe0, 
    	XK_Shift_L                     = 0xffe1,    // Left shift
    	XK_Shift_R                     = 0xffe2,    // Right shift
    	XK_Control_L                   = 0xffe3,    // Left control
    	XK_Control_R                   = 0xffe4,    // Right control
    	XK_Caps_Lock                   = 0xffe5,    // Caps lock
    	XK_Shift_Lock                  = 0xffe6,    // Shift lock
    	XK_Meta_L                      = 0xffe7,    // Left meta
    	XK_Meta_R                      = 0xffe8,    // Right meta
    	XK_Alt_L                       = 0xffe9,    // Left alt
    	XK_Alt_R                       = 0xffea,    // Right alt
    	XK_Super_L                     = 0xffeb,    // Left super
    	XK_Super_R                     = 0xffec,    // Right super
    	XK_Hyper_L                     = 0xffed,    // Left hyper
    	XK_Hyper_R                     = 0xffee,    // Right hyper
    	XK_ISO_Lock                    = 0xfe01, 
    	XK_ISO_Level2_Latch            = 0xfe02, 
    	XK_ISO_Level3_Shift            = 0xfe03, 
    	XK_ISO_Level3_Latch            = 0xfe04, 
    	XK_ISO_Level3_Lock             = 0xfe05, 
    	XK_ISO_Group_Shift             = 0xff7e,    // Alias for mode_switch
    	XK_ISO_Group_Latch             = 0xfe06, 
    	XK_ISO_Group_Lock              = 0xfe07, 
    	XK_ISO_Next_Group              = 0xfe08, 
    	XK_ISO_Next_Group_Lock         = 0xfe09, 
    	XK_ISO_Prev_Group              = 0xfe0a, 
    	XK_ISO_Prev_Group_Lock         = 0xfe0b, 
    	XK_ISO_First_Group             = 0xfe0c, 
    	XK_ISO_First_Group_Lock        = 0xfe0d, 
    	XK_ISO_Last_Group              = 0xfe0e, 
    	XK_ISO_Last_Group_Lock         = 0xfe0f, 
    	XK_ISO_Left_Tab                = 0xfe20, 
    	XK_ISO_Move_Line_Up            = 0xfe21, 
    	XK_ISO_Move_Line_Down          = 0xfe22, 
    	XK_ISO_Partial_Line_Up         = 0xfe23, 
    	XK_ISO_Partial_Line_Down       = 0xfe24, 
    	XK_ISO_Partial_Space_Left      = 0xfe25, 
    	XK_ISO_Partial_Space_Right     = 0xfe26, 
    	XK_ISO_Set_Margin_Left         = 0xfe27, 
    	XK_ISO_Set_Margin_Right        = 0xfe28, 
    	XK_ISO_Release_Margin_Left     = 0xfe29, 
    	XK_ISO_Release_Margin_Right    = 0xfe2a, 
    	XK_ISO_Release_Both_Margins    = 0xfe2b, 
    	XK_ISO_Fast_Cursor_Left        = 0xfe2c, 
    	XK_ISO_Fast_Cursor_Right       = 0xfe2d, 
    	XK_ISO_Fast_Cursor_Up          = 0xfe2e, 
    	XK_ISO_Fast_Cursor_Down        = 0xfe2f, 
    	XK_ISO_Continuous_Underline    = 0xfe30, 
    	XK_ISO_Discontinuous_Underline = 0xfe31, 
    	XK_ISO_Emphasize               = 0xfe32, 
    	XK_ISO_Center_Object           = 0xfe33, 
    	XK_ISO_Enter                   = 0xfe34, 
    	XK_dead_grave                  = 0xfe50, 
    	XK_dead_acute                  = 0xfe51, 
    	XK_dead_circumflex             = 0xfe52, 
    	XK_dead_tilde                  = 0xfe53, 
    	XK_dead_macron                 = 0xfe54, 
    	XK_dead_breve                  = 0xfe55, 
    	XK_dead_abovedot               = 0xfe56, 
    	XK_dead_diaeresis              = 0xfe57, 
    	XK_dead_abovering              = 0xfe58, 
    	XK_dead_doubleacute            = 0xfe59, 
    	XK_dead_caron                  = 0xfe5a, 
    	XK_dead_cedilla                = 0xfe5b, 
    	XK_dead_ogonek                 = 0xfe5c, 
    	XK_dead_iota                   = 0xfe5d, 
    	XK_dead_voiced_sound           = 0xfe5e, 
    	XK_dead_semivoiced_sound       = 0xfe5f, 
    	XK_dead_belowdot               = 0xfe60, 
    	XK_dead_hook                   = 0xfe61, 
    	XK_dead_horn                   = 0xfe62, 
    	XK_First_Virtual_Screen        = 0xfed0, 
    	XK_Prev_Virtual_Screen         = 0xfed1, 
    	XK_Next_Virtual_Screen         = 0xfed2, 
    	XK_Last_Virtual_Screen         = 0xfed4, 
    	XK_Terminate_Server            = 0xfed5, 
    	XK_AccessX_Enable              = 0xfe70, 
    	XK_AccessX_Feedback_Enable     = 0xfe71, 
    	XK_RepeatKeys_Enable           = 0xfe72, 
    	XK_SlowKeys_Enable             = 0xfe73, 
    	XK_BounceKeys_Enable           = 0xfe74, 
    	XK_StickyKeys_Enable           = 0xfe75, 
    	XK_MouseKeys_Enable            = 0xfe76, 
    	XK_MouseKeys_Accel_Enable      = 0xfe77, 
    	XK_Overlay1_Enable             = 0xfe78, 
    	XK_Overlay2_Enable             = 0xfe79, 
    	XK_AudibleBell_Enable          = 0xfe7a, 
    	XK_Pointer_Left                = 0xfee0, 
    	XK_Pointer_Right               = 0xfee1, 
    	XK_Pointer_Up                  = 0xfee2, 
    	XK_Pointer_Down                = 0xfee3, 
    	XK_Pointer_UpLeft              = 0xfee4, 
    	XK_Pointer_UpRight             = 0xfee5, 
    	XK_Pointer_DownLeft            = 0xfee6, 
    	XK_Pointer_DownRight           = 0xfee7, 
    	XK_Pointer_Button_Dflt         = 0xfee8, 
    	XK_Pointer_Button1             = 0xfee9, 
    	XK_Pointer_Button2             = 0xfeea, 
    	XK_Pointer_Button3             = 0xfeeb, 
    	XK_Pointer_Button4             = 0xfeec, 
    	XK_Pointer_Button5             = 0xfeed, 
    	XK_Pointer_DblClick_Dflt       = 0xfeee, 
    	XK_Pointer_DblClick1           = 0xfeef, 
    	XK_Pointer_DblClick2           = 0xfef0, 
    	XK_Pointer_DblClick3           = 0xfef1, 
    	XK_Pointer_DblClick4           = 0xfef2, 
    	XK_Pointer_DblClick5           = 0xfef3, 
    	XK_Pointer_Drag_Dflt           = 0xfef4, 
    	XK_Pointer_Drag1               = 0xfef5, 
    	XK_Pointer_Drag2               = 0xfef6, 
    	XK_Pointer_Drag3               = 0xfef7, 
    	XK_Pointer_Drag4               = 0xfef8, 
    	XK_Pointer_Drag5               = 0xfefd, 
    	XK_Pointer_EnableKeys          = 0xfef9, 
    	XK_Pointer_Accelerate          = 0xfefa, 
    	XK_Pointer_DfltBtnNext         = 0xfefb, 
    	XK_Pointer_DfltBtnPrev         = 0xfefc, 
    	XK_3270_Duplicate              = 0xfd01, 
    	XK_3270_FieldMark              = 0xfd02, 
    	XK_3270_Right2                 = 0xfd03, 
    	XK_3270_Left2                  = 0xfd04, 
    	XK_3270_BackTab                = 0xfd05, 
    	XK_3270_EraseEOF               = 0xfd06, 
    	XK_3270_EraseInput             = 0xfd07, 
    	XK_3270_Reset                  = 0xfd08, 
    	XK_3270_Quit                   = 0xfd09, 
    	XK_3270_PA1                    = 0xfd0a, 
    	XK_3270_PA2                    = 0xfd0b, 
    	XK_3270_PA3                    = 0xfd0c, 
    	XK_3270_Test                   = 0xfd0d, 
    	XK_3270_Attn                   = 0xfd0e, 
    	XK_3270_CursorBlink            = 0xfd0f, 
    	XK_3270_AltCursor              = 0xfd10, 
    	XK_3270_KeyClick               = 0xfd11, 
    	XK_3270_Jump                   = 0xfd12, 
    	XK_3270_Ident                  = 0xfd13, 
    	XK_3270_Rule                   = 0xfd14, 
    	XK_3270_Copy                   = 0xfd15, 
    	XK_3270_Play                   = 0xfd16, 
    	XK_3270_Setup                  = 0xfd17, 
    	XK_3270_Record                 = 0xfd18, 
    	XK_3270_ChangeScreen           = 0xfd19, 
    	XK_3270_DeleteWord             = 0xfd1a, 
    	XK_3270_ExSelect               = 0xfd1b, 
    	XK_3270_CursorSelect           = 0xfd1c, 
    	XK_3270_PrintScreen            = 0xfd1d, 
    	XK_3270_Enter                  = 0xfd1e, 
    	XK_space                       = 0x0020,    // U+0020 SPACE
    	XK_exclam                      = 0x0021,    // U+0021 EXCLAMATION MARK
    	XK_quotedbl                    = 0x0022,    // U+0022 QUOTATION MARK
    	XK_numbersign                  = 0x0023,    // U+0023 NUMBER SIGN
    	XK_dollar                      = 0x0024,    // U+0024 DOLLAR SIGN
    	XK_percent                     = 0x0025,    // U+0025 PERCENT SIGN
    	XK_ampersand                   = 0x0026,    // U+0026 AMPERSAND
    	XK_apostrophe                  = 0x0027,    // U+0027 APOSTROPHE
    	XK_quoteright                  = 0x0027,    // deprecated
    	XK_parenleft                   = 0x0028,    // U+0028 LEFT PARENTHESIS
    	XK_parenright                  = 0x0029,    // U+0029 RIGHT PARENTHESIS
    	XK_asterisk                    = 0x002a,    // U+002A ASTERISK
    	XK_plus                        = 0x002b,    // U+002B PLUS SIGN
    	XK_comma                       = 0x002c,    // U+002C COMMA
    	XK_minus                       = 0x002d,    // U+002D HYPHEN-MINUS
    	XK_period                      = 0x002e,    // U+002E FULL STOP
    	XK_slash                       = 0x002f,    // U+002F SOLIDUS
    	XK_0                           = 0x0030,    // U+0030 DIGIT ZERO
    	XK_1                           = 0x0031,    // U+0031 DIGIT ONE
    	XK_2                           = 0x0032,    // U+0032 DIGIT TWO
    	XK_3                           = 0x0033,    // U+0033 DIGIT THREE
    	XK_4                           = 0x0034,    // U+0034 DIGIT FOUR
    	XK_5                           = 0x0035,    // U+0035 DIGIT FIVE
    	XK_6                           = 0x0036,    // U+0036 DIGIT SIX
    	XK_7                           = 0x0037,    // U+0037 DIGIT SEVEN
    	XK_8                           = 0x0038,    // U+0038 DIGIT EIGHT
    	XK_9                           = 0x0039,    // U+0039 DIGIT NINE
    	XK_colon                       = 0x003a,    // U+003A COLON
    	XK_semicolon                   = 0x003b,    // U+003B SEMICOLON
    	XK_less                        = 0x003c,    // U+003C LESS-THAN SIGN
    	XK_equal                       = 0x003d,    // U+003D EQUALS SIGN
    	XK_greater                     = 0x003e,    // U+003E GREATER-THAN SIGN
    	XK_question                    = 0x003f,    // U+003F QUESTION MARK
    	XK_at                          = 0x0040,    // U+0040 COMMERCIAL AT
    	XK_A                           = 0x0041,    // U+0041 LATIN CAPITAL LETTER A
    	XK_B                           = 0x0042,    // U+0042 LATIN CAPITAL LETTER B
    	XK_C                           = 0x0043,    // U+0043 LATIN CAPITAL LETTER C
    	XK_D                           = 0x0044,    // U+0044 LATIN CAPITAL LETTER D
    	XK_E                           = 0x0045,    // U+0045 LATIN CAPITAL LETTER E
    	XK_F                           = 0x0046,    // U+0046 LATIN CAPITAL LETTER F
    	XK_G                           = 0x0047,    // U+0047 LATIN CAPITAL LETTER G
    	XK_H                           = 0x0048,    // U+0048 LATIN CAPITAL LETTER H
    	XK_I                           = 0x0049,    // U+0049 LATIN CAPITAL LETTER I
    	XK_J                           = 0x004a,    // U+004A LATIN CAPITAL LETTER J
    	XK_K                           = 0x004b,    // U+004B LATIN CAPITAL LETTER K
    	XK_L                           = 0x004c,    // U+004C LATIN CAPITAL LETTER L
    	XK_M                           = 0x004d,    // U+004D LATIN CAPITAL LETTER M
    	XK_N                           = 0x004e,    // U+004E LATIN CAPITAL LETTER N
    	XK_O                           = 0x004f,    // U+004F LATIN CAPITAL LETTER O
    	XK_P                           = 0x0050,    // U+0050 LATIN CAPITAL LETTER P
    	XK_Q                           = 0x0051,    // U+0051 LATIN CAPITAL LETTER Q
    	XK_R                           = 0x0052,    // U+0052 LATIN CAPITAL LETTER R
    	XK_S                           = 0x0053,    // U+0053 LATIN CAPITAL LETTER S
    	XK_T                           = 0x0054,    // U+0054 LATIN CAPITAL LETTER T
    	XK_U                           = 0x0055,    // U+0055 LATIN CAPITAL LETTER U
    	XK_V                           = 0x0056,    // U+0056 LATIN CAPITAL LETTER V
    	XK_W                           = 0x0057,    // U+0057 LATIN CAPITAL LETTER W
    	XK_X                           = 0x0058,    // U+0058 LATIN CAPITAL LETTER X
    	XK_Y                           = 0x0059,    // U+0059 LATIN CAPITAL LETTER Y
    	XK_Z                           = 0x005a,    // U+005A LATIN CAPITAL LETTER Z
    	XK_bracketleft                 = 0x005b,    // U+005B LEFT SQUARE BRACKET
    	XK_backslash                   = 0x005c,    // U+005C REVERSE SOLIDUS
    	XK_bracketright                = 0x005d,    // U+005D RIGHT SQUARE BRACKET
    	XK_asciicircum                 = 0x005e,    // U+005E CIRCUMFLEX ACCENT
    	XK_underscore                  = 0x005f,    // U+005F LOW LINE
    	XK_grave                       = 0x0060,    // U+0060 GRAVE ACCENT
    	XK_quoteleft                   = 0x0060,    // deprecated
    	XK_a                           = 0x0061,    // U+0061 LATIN SMALL LETTER A
    	XK_b                           = 0x0062,    // U+0062 LATIN SMALL LETTER B
    	XK_c                           = 0x0063,    // U+0063 LATIN SMALL LETTER C
    	XK_d                           = 0x0064,    // U+0064 LATIN SMALL LETTER D
    	XK_e                           = 0x0065,    // U+0065 LATIN SMALL LETTER E
    	XK_f                           = 0x0066,    // U+0066 LATIN SMALL LETTER F
    	XK_g                           = 0x0067,    // U+0067 LATIN SMALL LETTER G
    	XK_h                           = 0x0068,    // U+0068 LATIN SMALL LETTER H
    	XK_i                           = 0x0069,    // U+0069 LATIN SMALL LETTER I
    	XK_j                           = 0x006a,    // U+006A LATIN SMALL LETTER J
    	XK_k                           = 0x006b,    // U+006B LATIN SMALL LETTER K
    	XK_l                           = 0x006c,    // U+006C LATIN SMALL LETTER L
    	XK_m                           = 0x006d,    // U+006D LATIN SMALL LETTER M
    	XK_n                           = 0x006e,    // U+006E LATIN SMALL LETTER N
    	XK_o                           = 0x006f,    // U+006F LATIN SMALL LETTER O
    	XK_p                           = 0x0070,    // U+0070 LATIN SMALL LETTER P
    	XK_q                           = 0x0071,    // U+0071 LATIN SMALL LETTER Q
    	XK_r                           = 0x0072,    // U+0072 LATIN SMALL LETTER R
    	XK_s                           = 0x0073,    // U+0073 LATIN SMALL LETTER S
    	XK_t                           = 0x0074,    // U+0074 LATIN SMALL LETTER T
    	XK_u                           = 0x0075,    // U+0075 LATIN SMALL LETTER U
    	XK_v                           = 0x0076,    // U+0076 LATIN SMALL LETTER V
    	XK_w                           = 0x0077,    // U+0077 LATIN SMALL LETTER W
    	XK_x                           = 0x0078,    // U+0078 LATIN SMALL LETTER X
    	XK_y                           = 0x0079,    // U+0079 LATIN SMALL LETTER Y
    	XK_z                           = 0x007a,    // U+007A LATIN SMALL LETTER Z
    	XK_braceleft                   = 0x007b,    // U+007B LEFT CURLY BRACKET
    	XK_bar                         = 0x007c,    // U+007C VERTICAL LINE
    	XK_braceright                  = 0x007d,    // U+007D RIGHT CURLY BRACKET
    	XK_asciitilde                  = 0x007e,    // U+007E TILDE
    	XK_nobreakspace                = 0x00a0,    // U+00A0 NO-BREAK SPACE
    	XK_exclamdown                  = 0x00a1,    // U+00A1 INVERTED EXCLAMATION MARK
    	XK_cent                        = 0x00a2,    // U+00A2 CENT SIGN
    	XK_sterling                    = 0x00a3,    // U+00A3 POUND SIGN
    	XK_currency                    = 0x00a4,    // U+00A4 CURRENCY SIGN
    	XK_yen                         = 0x00a5,    // U+00A5 YEN SIGN
    	XK_brokenbar                   = 0x00a6,    // U+00A6 BROKEN BAR
    	XK_section                     = 0x00a7,    // U+00A7 SECTION SIGN
    	XK_diaeresis                   = 0x00a8,    // U+00A8 DIAERESIS
    	XK_copyright                   = 0x00a9,    // U+00A9 COPYRIGHT SIGN
    	XK_ordfeminine                 = 0x00aa,    // U+00AA FEMININE ORDINAL INDICATOR
    	XK_guillemotleft               = 0x00ab,    // U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    	XK_notsign                     = 0x00ac,    // U+00AC NOT SIGN
    	XK_hyphen                      = 0x00ad,    // U+00AD SOFT HYPHEN
    	XK_registered                  = 0x00ae,    // U+00AE REGISTERED SIGN
    	XK_macron                      = 0x00af,    // U+00AF MACRON
    	XK_degree                      = 0x00b0,    // U+00B0 DEGREE SIGN
    	XK_plusminus                   = 0x00b1,    // U+00B1 PLUS-MINUS SIGN
    	XK_twosuperior                 = 0x00b2,    // U+00B2 SUPERSCRIPT TWO
    	XK_threesuperior               = 0x00b3,    // U+00B3 SUPERSCRIPT THREE
    	XK_acute                       = 0x00b4,    // U+00B4 ACUTE ACCENT
    	XK_mu                          = 0x00b5,    // U+00B5 MICRO SIGN
    	XK_paragraph                   = 0x00b6,    // U+00B6 PILCROW SIGN
    	XK_periodcentered              = 0x00b7,    // U+00B7 MIDDLE DOT
    	XK_cedilla                     = 0x00b8,    // U+00B8 CEDILLA
    	XK_onesuperior                 = 0x00b9,    // U+00B9 SUPERSCRIPT ONE
    	XK_masculine                   = 0x00ba,    // U+00BA MASCULINE ORDINAL INDICATOR
    	XK_guillemotright              = 0x00bb,    // U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
    	XK_onequarter                  = 0x00bc,    // U+00BC VULGAR FRACTION ONE QUARTER
    	XK_onehalf                     = 0x00bd,    // U+00BD VULGAR FRACTION ONE HALF
    	XK_threequarters               = 0x00be,    // U+00BE VULGAR FRACTION THREE QUARTERS
    	XK_questiondown                = 0x00bf,    // U+00BF INVERTED QUESTION MARK
    	XK_Agrave                      = 0x00c0,    // U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
    	XK_Aacute                      = 0x00c1,    // U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
    	XK_Acircumflex                 = 0x00c2,    // U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
    	XK_Atilde                      = 0x00c3,    // U+00C3 LATIN CAPITAL LETTER A WITH TILDE
    	XK_Adiaeresis                  = 0x00c4,    // U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
    	XK_Aring                       = 0x00c5,    // U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
    	XK_AE                          = 0x00c6,    // U+00C6 LATIN CAPITAL LETTER AE
    	XK_Ccedilla                    = 0x00c7,    // U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
    	XK_Egrave                      = 0x00c8,    // U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
    	XK_Eacute                      = 0x00c9,    // U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
    	XK_Ecircumflex                 = 0x00ca,    // U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
    	XK_Ediaeresis                  = 0x00cb,    // U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
    	XK_Igrave                      = 0x00cc,    // U+00CC LATIN CAPITAL LETTER I WITH GRAVE
    	XK_Iacute                      = 0x00cd,    // U+00CD LATIN CAPITAL LETTER I WITH ACUTE
    	XK_Icircumflex                 = 0x00ce,    // U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
    	XK_Idiaeresis                  = 0x00cf,    // U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
    	XK_ETH                         = 0x00d0,    // U+00D0 LATIN CAPITAL LETTER ETH
    	XK_Eth                         = 0x00d0,    // deprecated
    	XK_Ntilde                      = 0x00d1,    // U+00D1 LATIN CAPITAL LETTER N WITH TILDE
    	XK_Ograve                      = 0x00d2,    // U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
    	XK_Oacute                      = 0x00d3,    // U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
    	XK_Ocircumflex                 = 0x00d4,    // U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
    	XK_Otilde                      = 0x00d5,    // U+00D5 LATIN CAPITAL LETTER O WITH TILDE
    	XK_Odiaeresis                  = 0x00d6,    // U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
    	XK_multiply                    = 0x00d7,    // U+00D7 MULTIPLICATION SIGN
    	XK_Oslash                      = 0x00d8,    // U+00D8 LATIN CAPITAL LETTER O WITH STROKE
    	XK_Ooblique                    = 0x00d8,    // U+00D8 LATIN CAPITAL LETTER O WITH STROKE
    	XK_Ugrave                      = 0x00d9,    // U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
    	XK_Uacute                      = 0x00da,    // U+00DA LATIN CAPITAL LETTER U WITH ACUTE
    	XK_Ucircumflex                 = 0x00db,    // U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
    	XK_Udiaeresis                  = 0x00dc,    // U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
    	XK_Yacute                      = 0x00dd,    // U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
    	XK_THORN                       = 0x00de,    // U+00DE LATIN CAPITAL LETTER THORN
    	XK_Thorn                       = 0x00de,    // deprecated
    	XK_ssharp                      = 0x00df,    // U+00DF LATIN SMALL LETTER SHARP S
    	XK_agrave                      = 0x00e0,    // U+00E0 LATIN SMALL LETTER A WITH GRAVE
    	XK_aacute                      = 0x00e1,    // U+00E1 LATIN SMALL LETTER A WITH ACUTE
    	XK_acircumflex                 = 0x00e2,    // U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
    	XK_atilde                      = 0x00e3,    // U+00E3 LATIN SMALL LETTER A WITH TILDE
    	XK_adiaeresis                  = 0x00e4,    // U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
    	XK_aring                       = 0x00e5,    // U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
    	XK_ae                          = 0x00e6,    // U+00E6 LATIN SMALL LETTER AE
    	XK_ccedilla                    = 0x00e7,    // U+00E7 LATIN SMALL LETTER C WITH CEDILLA
    	XK_egrave                      = 0x00e8,    // U+00E8 LATIN SMALL LETTER E WITH GRAVE
    	XK_eacute                      = 0x00e9,    // U+00E9 LATIN SMALL LETTER E WITH ACUTE
    	XK_ecircumflex                 = 0x00ea,    // U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
    	XK_ediaeresis                  = 0x00eb,    // U+00EB LATIN SMALL LETTER E WITH DIAERESIS
    	XK_igrave                      = 0x00ec,    // U+00EC LATIN SMALL LETTER I WITH GRAVE
    	XK_iacute                      = 0x00ed,    // U+00ED LATIN SMALL LETTER I WITH ACUTE
    	XK_icircumflex                 = 0x00ee,    // U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
    	XK_idiaeresis                  = 0x00ef,    // U+00EF LATIN SMALL LETTER I WITH DIAERESIS
    	XK_eth                         = 0x00f0,    // U+00F0 LATIN SMALL LETTER ETH
    	XK_ntilde                      = 0x00f1,    // U+00F1 LATIN SMALL LETTER N WITH TILDE
    	XK_ograve                      = 0x00f2,    // U+00F2 LATIN SMALL LETTER O WITH GRAVE
    	XK_oacute                      = 0x00f3,    // U+00F3 LATIN SMALL LETTER O WITH ACUTE
    	XK_ocircumflex                 = 0x00f4,    // U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
    	XK_otilde                      = 0x00f5,    // U+00F5 LATIN SMALL LETTER O WITH TILDE
    	XK_odiaeresis                  = 0x00f6,    // U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
    	XK_division                    = 0x00f7,    // U+00F7 DIVISION SIGN
    	XK_oslash                      = 0x00f8,    // U+00F8 LATIN SMALL LETTER O WITH STROKE
    	XK_ooblique                    = 0x00f8,    // U+00F8 LATIN SMALL LETTER O WITH STROKE
    	XK_ugrave                      = 0x00f9,    // U+00F9 LATIN SMALL LETTER U WITH GRAVE
    	XK_uacute                      = 0x00fa,    // U+00FA LATIN SMALL LETTER U WITH ACUTE
    	XK_ucircumflex                 = 0x00fb,    // U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
    	XK_udiaeresis                  = 0x00fc,    // U+00FC LATIN SMALL LETTER U WITH DIAERESIS
    	XK_yacute                      = 0x00fd,    // U+00FD LATIN SMALL LETTER Y WITH ACUTE
    	XK_thorn                       = 0x00fe,    // U+00FE LATIN SMALL LETTER THORN
    	XK_ydiaeresis                  = 0x00ff,    // U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
    	XK_Aogonek                     = 0x01a1,    // U+0104 LATIN CAPITAL LETTER A WITH OGONEK
    	XK_breve                       = 0x01a2,    // U+02D8 BREVE
    	XK_Lstroke                     = 0x01a3,    // U+0141 LATIN CAPITAL LETTER L WITH STROKE
    	XK_Lcaron                      = 0x01a5,    // U+013D LATIN CAPITAL LETTER L WITH CARON
    	XK_Sacute                      = 0x01a6,    // U+015A LATIN CAPITAL LETTER S WITH ACUTE
    	XK_Scaron                      = 0x01a9,    // U+0160 LATIN CAPITAL LETTER S WITH CARON
    	XK_Scedilla                    = 0x01aa,    // U+015E LATIN CAPITAL LETTER S WITH CEDILLA
    	XK_Tcaron                      = 0x01ab,    // U+0164 LATIN CAPITAL LETTER T WITH CARON
    	XK_Zacute                      = 0x01ac,    // U+0179 LATIN CAPITAL LETTER Z WITH ACUTE
    	XK_Zcaron                      = 0x01ae,    // U+017D LATIN CAPITAL LETTER Z WITH CARON
    	XK_Zabovedot                   = 0x01af,    // U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE
    	XK_aogonek                     = 0x01b1,    // U+0105 LATIN SMALL LETTER A WITH OGONEK
    	XK_ogonek                      = 0x01b2,    // U+02DB OGONEK
    	XK_lstroke                     = 0x01b3,    // U+0142 LATIN SMALL LETTER L WITH STROKE
    	XK_lcaron                      = 0x01b5,    // U+013E LATIN SMALL LETTER L WITH CARON
    	XK_sacute                      = 0x01b6,    // U+015B LATIN SMALL LETTER S WITH ACUTE
    	XK_caron                       = 0x01b7,    // U+02C7 CARON
    	XK_scaron                      = 0x01b9,    // U+0161 LATIN SMALL LETTER S WITH CARON
    	XK_scedilla                    = 0x01ba,    // U+015F LATIN SMALL LETTER S WITH CEDILLA
    	XK_tcaron                      = 0x01bb,    // U+0165 LATIN SMALL LETTER T WITH CARON
    	XK_zacute                      = 0x01bc,    // U+017A LATIN SMALL LETTER Z WITH ACUTE
    	XK_doubleacute                 = 0x01bd,    // U+02DD DOUBLE ACUTE ACCENT
    	XK_zcaron                      = 0x01be,    // U+017E LATIN SMALL LETTER Z WITH CARON
    	XK_zabovedot                   = 0x01bf,    // U+017C LATIN SMALL LETTER Z WITH DOT ABOVE
    	XK_Racute                      = 0x01c0,    // U+0154 LATIN CAPITAL LETTER R WITH ACUTE
    	XK_Abreve                      = 0x01c3,    // U+0102 LATIN CAPITAL LETTER A WITH BREVE
    	XK_Lacute                      = 0x01c5,    // U+0139 LATIN CAPITAL LETTER L WITH ACUTE
    	XK_Cacute                      = 0x01c6,    // U+0106 LATIN CAPITAL LETTER C WITH ACUTE
    	XK_Ccaron                      = 0x01c8,    // U+010C LATIN CAPITAL LETTER C WITH CARON
    	XK_Eogonek                     = 0x01ca,    // U+0118 LATIN CAPITAL LETTER E WITH OGONEK
    	XK_Ecaron                      = 0x01cc,    // U+011A LATIN CAPITAL LETTER E WITH CARON
    	XK_Dcaron                      = 0x01cf,    // U+010E LATIN CAPITAL LETTER D WITH CARON
    	XK_Dstroke                     = 0x01d0,    // U+0110 LATIN CAPITAL LETTER D WITH STROKE
    	XK_Nacute                      = 0x01d1,    // U+0143 LATIN CAPITAL LETTER N WITH ACUTE
    	XK_Ncaron                      = 0x01d2,    // U+0147 LATIN CAPITAL LETTER N WITH CARON
    	XK_Odoubleacute                = 0x01d5,    // U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
    	XK_Rcaron                      = 0x01d8,    // U+0158 LATIN CAPITAL LETTER R WITH CARON
    	XK_Uring                       = 0x01d9,    // U+016E LATIN CAPITAL LETTER U WITH RING ABOVE
    	XK_Udoubleacute                = 0x01db,    // U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
    	XK_Tcedilla                    = 0x01de,    // U+0162 LATIN CAPITAL LETTER T WITH CEDILLA
    	XK_racute                      = 0x01e0,    // U+0155 LATIN SMALL LETTER R WITH ACUTE
    	XK_abreve                      = 0x01e3,    // U+0103 LATIN SMALL LETTER A WITH BREVE
    	XK_lacute                      = 0x01e5,    // U+013A LATIN SMALL LETTER L WITH ACUTE
    	XK_cacute                      = 0x01e6,    // U+0107 LATIN SMALL LETTER C WITH ACUTE
    	XK_ccaron                      = 0x01e8,    // U+010D LATIN SMALL LETTER C WITH CARON
    	XK_eogonek                     = 0x01ea,    // U+0119 LATIN SMALL LETTER E WITH OGONEK
    	XK_ecaron                      = 0x01ec,    // U+011B LATIN SMALL LETTER E WITH CARON
    	XK_dcaron                      = 0x01ef,    // U+010F LATIN SMALL LETTER D WITH CARON
    	XK_dstroke                     = 0x01f0,    // U+0111 LATIN SMALL LETTER D WITH STROKE
    	XK_nacute                      = 0x01f1,    // U+0144 LATIN SMALL LETTER N WITH ACUTE
    	XK_ncaron                      = 0x01f2,    // U+0148 LATIN SMALL LETTER N WITH CARON
    	XK_odoubleacute                = 0x01f5,    // U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE
    	XK_udoubleacute                = 0x01fb,    // U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE
    	XK_rcaron                      = 0x01f8,    // U+0159 LATIN SMALL LETTER R WITH CARON
    	XK_uring                       = 0x01f9,    // U+016F LATIN SMALL LETTER U WITH RING ABOVE
    	XK_tcedilla                    = 0x01fe,    // U+0163 LATIN SMALL LETTER T WITH CEDILLA
    	XK_abovedot                    = 0x01ff,    // U+02D9 DOT ABOVE
    	XK_Hstroke                     = 0x02a1,    // U+0126 LATIN CAPITAL LETTER H WITH STROKE
    	XK_Hcircumflex                 = 0x02a6,    // U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
    	XK_Iabovedot                   = 0x02a9,    // U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
    	XK_Gbreve                      = 0x02ab,    // U+011E LATIN CAPITAL LETTER G WITH BREVE
    	XK_Jcircumflex                 = 0x02ac,    // U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
    	XK_hstroke                     = 0x02b1,    // U+0127 LATIN SMALL LETTER H WITH STROKE
    	XK_hcircumflex                 = 0x02b6,    // U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX
    	XK_idotless                    = 0x02b9,    // U+0131 LATIN SMALL LETTER DOTLESS I
    	XK_gbreve                      = 0x02bb,    // U+011F LATIN SMALL LETTER G WITH BREVE
    	XK_jcircumflex                 = 0x02bc,    // U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX
    	XK_Cabovedot                   = 0x02c5,    // U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE
    	XK_Ccircumflex                 = 0x02c6,    // U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
    	XK_Gabovedot                   = 0x02d5,    // U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE
    	XK_Gcircumflex                 = 0x02d8,    // U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX
    	XK_Ubreve                      = 0x02dd,    // U+016C LATIN CAPITAL LETTER U WITH BREVE
    	XK_Scircumflex                 = 0x02de,    // U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX
    	XK_cabovedot                   = 0x02e5,    // U+010B LATIN SMALL LETTER C WITH DOT ABOVE
    	XK_ccircumflex                 = 0x02e6,    // U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX
    	XK_gabovedot                   = 0x02f5,    // U+0121 LATIN SMALL LETTER G WITH DOT ABOVE
    	XK_gcircumflex                 = 0x02f8,    // U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX
    	XK_ubreve                      = 0x02fd,    // U+016D LATIN SMALL LETTER U WITH BREVE
    	XK_scircumflex                 = 0x02fe,    // U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX
    	XK_kra                         = 0x03a2,    // U+0138 LATIN SMALL LETTER KRA
    	XK_kappa                       = 0x03a2,    // deprecated
    	XK_Rcedilla                    = 0x03a3,    // U+0156 LATIN CAPITAL LETTER R WITH CEDILLA
    	XK_Itilde                      = 0x03a5,    // U+0128 LATIN CAPITAL LETTER I WITH TILDE
    	XK_Lcedilla                    = 0x03a6,    // U+013B LATIN CAPITAL LETTER L WITH CEDILLA
    	XK_Emacron                     = 0x03aa,    // U+0112 LATIN CAPITAL LETTER E WITH MACRON
    	XK_Gcedilla                    = 0x03ab,    // U+0122 LATIN CAPITAL LETTER G WITH CEDILLA
    	XK_Tslash                      = 0x03ac,    // U+0166 LATIN CAPITAL LETTER T WITH STROKE
    	XK_rcedilla                    = 0x03b3,    // U+0157 LATIN SMALL LETTER R WITH CEDILLA
    	XK_itilde                      = 0x03b5,    // U+0129 LATIN SMALL LETTER I WITH TILDE
    	XK_lcedilla                    = 0x03b6,    // U+013C LATIN SMALL LETTER L WITH CEDILLA
    	XK_emacron                     = 0x03ba,    // U+0113 LATIN SMALL LETTER E WITH MACRON
    	XK_gcedilla                    = 0x03bb,    // U+0123 LATIN SMALL LETTER G WITH CEDILLA
    	XK_tslash                      = 0x03bc,    // U+0167 LATIN SMALL LETTER T WITH STROKE
    	XK_ENG                         = 0x03bd,    // U+014A LATIN CAPITAL LETTER ENG
    	XK_eng                         = 0x03bf,    // U+014B LATIN SMALL LETTER ENG
    	XK_Amacron                     = 0x03c0,    // U+0100 LATIN CAPITAL LETTER A WITH MACRON
    	XK_Iogonek                     = 0x03c7,    // U+012E LATIN CAPITAL LETTER I WITH OGONEK
    	XK_Eabovedot                   = 0x03cc,    // U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE
    	XK_Imacron                     = 0x03cf,    // U+012A LATIN CAPITAL LETTER I WITH MACRON
    	XK_Ncedilla                    = 0x03d1,    // U+0145 LATIN CAPITAL LETTER N WITH CEDILLA
    	XK_Omacron                     = 0x03d2,    // U+014C LATIN CAPITAL LETTER O WITH MACRON
    	XK_Kcedilla                    = 0x03d3,    // U+0136 LATIN CAPITAL LETTER K WITH CEDILLA
    	XK_Uogonek                     = 0x03d9,    // U+0172 LATIN CAPITAL LETTER U WITH OGONEK
    	XK_Utilde                      = 0x03dd,    // U+0168 LATIN CAPITAL LETTER U WITH TILDE
    	XK_Umacron                     = 0x03de,    // U+016A LATIN CAPITAL LETTER U WITH MACRON
    	XK_amacron                     = 0x03e0,    // U+0101 LATIN SMALL LETTER A WITH MACRON
    	XK_iogonek                     = 0x03e7,    // U+012F LATIN SMALL LETTER I WITH OGONEK
    	XK_eabovedot                   = 0x03ec,    // U+0117 LATIN SMALL LETTER E WITH DOT ABOVE
    	XK_imacron                     = 0x03ef,    // U+012B LATIN SMALL LETTER I WITH MACRON
    	XK_ncedilla                    = 0x03f1,    // U+0146 LATIN SMALL LETTER N WITH CEDILLA
    	XK_omacron                     = 0x03f2,    // U+014D LATIN SMALL LETTER O WITH MACRON
    	XK_kcedilla                    = 0x03f3,    // U+0137 LATIN SMALL LETTER K WITH CEDILLA
    	XK_uogonek                     = 0x03f9,    // U+0173 LATIN SMALL LETTER U WITH OGONEK
    	XK_utilde                      = 0x03fd,    // U+0169 LATIN SMALL LETTER U WITH TILDE
    	XK_umacron                     = 0x03fe,    // U+016B LATIN SMALL LETTER U WITH MACRON
    	XK_Babovedot                   = 0x1001e02, // U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE
    	XK_babovedot                   = 0x1001e03, // U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE
    	XK_Dabovedot                   = 0x1001e0a, // U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE
    	XK_Wgrave                      = 0x1001e80, // U+1E80 LATIN CAPITAL LETTER W WITH GRAVE
    	XK_Wacute                      = 0x1001e82, // U+1E82 LATIN CAPITAL LETTER W WITH ACUTE
    	XK_dabovedot                   = 0x1001e0b, // U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE
    	XK_Ygrave                      = 0x1001ef2, // U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE
    	XK_Fabovedot                   = 0x1001e1e, // U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE
    	XK_fabovedot                   = 0x1001e1f, // U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE
    	XK_Mabovedot                   = 0x1001e40, // U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE
    	XK_mabovedot                   = 0x1001e41, // U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE
    	XK_Pabovedot                   = 0x1001e56, // U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE
    	XK_wgrave                      = 0x1001e81, // U+1E81 LATIN SMALL LETTER W WITH GRAVE
    	XK_pabovedot                   = 0x1001e57, // U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE
    	XK_wacute                      = 0x1001e83, // U+1E83 LATIN SMALL LETTER W WITH ACUTE
    	XK_Sabovedot                   = 0x1001e60, // U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE
    	XK_ygrave                      = 0x1001ef3, // U+1EF3 LATIN SMALL LETTER Y WITH GRAVE
    	XK_Wdiaeresis                  = 0x1001e84, // U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS
    	XK_wdiaeresis                  = 0x1001e85, // U+1E85 LATIN SMALL LETTER W WITH DIAERESIS
    	XK_sabovedot                   = 0x1001e61, // U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE
    	XK_Wcircumflex                 = 0x1000174, // U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX
    	XK_Tabovedot                   = 0x1001e6a, // U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE
    	XK_Ycircumflex                 = 0x1000176, // U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
    	XK_wcircumflex                 = 0x1000175, // U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX
    	XK_tabovedot                   = 0x1001e6b, // U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE
    	XK_ycircumflex                 = 0x1000177, // U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX
    	XK_OE                          = 0x13bc,    // U+0152 LATIN CAPITAL LIGATURE OE
    	XK_oe                          = 0x13bd,    // U+0153 LATIN SMALL LIGATURE OE
    	XK_Ydiaeresis                  = 0x13be,    // U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
    	XK_overline                    = 0x047e,    // U+203E OVERLINE
    	XK_kana_fullstop               = 0x04a1,    // U+3002 IDEOGRAPHIC FULL STOP
    	XK_kana_openingbracket         = 0x04a2,    // U+300C LEFT CORNER BRACKET
    	XK_kana_closingbracket         = 0x04a3,    // U+300D RIGHT CORNER BRACKET
    	XK_kana_comma                  = 0x04a4,    // U+3001 IDEOGRAPHIC COMMA
    	XK_kana_conjunctive            = 0x04a5,    // U+30FB KATAKANA MIDDLE DOT
    	XK_kana_middledot              = 0x04a5,    // deprecated
    	XK_kana_WO                     = 0x04a6,    // U+30F2 KATAKANA LETTER WO
    	XK_kana_a                      = 0x04a7,    // U+30A1 KATAKANA LETTER SMALL A
    	XK_kana_i                      = 0x04a8,    // U+30A3 KATAKANA LETTER SMALL I
    	XK_kana_u                      = 0x04a9,    // U+30A5 KATAKANA LETTER SMALL U
    	XK_kana_e                      = 0x04aa,    // U+30A7 KATAKANA LETTER SMALL E
    	XK_kana_o                      = 0x04ab,    // U+30A9 KATAKANA LETTER SMALL O
    	XK_kana_ya                     = 0x04ac,    // U+30E3 KATAKANA LETTER SMALL YA
    	XK_kana_yu                     = 0x04ad,    // U+30E5 KATAKANA LETTER SMALL YU
    	XK_kana_yo                     = 0x04ae,    // U+30E7 KATAKANA LETTER SMALL YO
    	XK_kana_tsu                    = 0x04af,    // U+30C3 KATAKANA LETTER SMALL TU
    	XK_kana_tu                     = 0x04af,    // deprecated
    	XK_prolongedsound              = 0x04b0,    // U+30FC KATAKANA-HIRAGANA PROLONGED SOUND MARK
    	XK_kana_A                      = 0x04b1,    // U+30A2 KATAKANA LETTER A
    	XK_kana_I                      = 0x04b2,    // U+30A4 KATAKANA LETTER I
    	XK_kana_U                      = 0x04b3,    // U+30A6 KATAKANA LETTER U
    	XK_kana_E                      = 0x04b4,    // U+30A8 KATAKANA LETTER E
    	XK_kana_O                      = 0x04b5,    // U+30AA KATAKANA LETTER O
    	XK_kana_KA                     = 0x04b6,    // U+30AB KATAKANA LETTER KA
    	XK_kana_KI                     = 0x04b7,    // U+30AD KATAKANA LETTER KI
    	XK_kana_KU                     = 0x04b8,    // U+30AF KATAKANA LETTER KU
    	XK_kana_KE                     = 0x04b9,    // U+30B1 KATAKANA LETTER KE
    	XK_kana_KO                     = 0x04ba,    // U+30B3 KATAKANA LETTER KO
    	XK_kana_SA                     = 0x04bb,    // U+30B5 KATAKANA LETTER SA
    	XK_kana_SHI                    = 0x04bc,    // U+30B7 KATAKANA LETTER SI
    	XK_kana_SU                     = 0x04bd,    // U+30B9 KATAKANA LETTER SU
    	XK_kana_SE                     = 0x04be,    // U+30BB KATAKANA LETTER SE
    	XK_kana_SO                     = 0x04bf,    // U+30BD KATAKANA LETTER SO
    	XK_kana_TA                     = 0x04c0,    // U+30BF KATAKANA LETTER TA
    	XK_kana_CHI                    = 0x04c1,    // U+30C1 KATAKANA LETTER TI
    	XK_kana_TI                     = 0x04c1,    // deprecated
    	XK_kana_TSU                    = 0x04c2,    // U+30C4 KATAKANA LETTER TU
    	XK_kana_TU                     = 0x04c2,    // deprecated
    	XK_kana_TE                     = 0x04c3,    // U+30C6 KATAKANA LETTER TE
    	XK_kana_TO                     = 0x04c4,    // U+30C8 KATAKANA LETTER TO
    	XK_kana_NA                     = 0x04c5,    // U+30CA KATAKANA LETTER NA
    	XK_kana_NI                     = 0x04c6,    // U+30CB KATAKANA LETTER NI
    	XK_kana_NU                     = 0x04c7,    // U+30CC KATAKANA LETTER NU
    	XK_kana_NE                     = 0x04c8,    // U+30CD KATAKANA LETTER NE
    	XK_kana_NO                     = 0x04c9,    // U+30CE KATAKANA LETTER NO
    	XK_kana_HA                     = 0x04ca,    // U+30CF KATAKANA LETTER HA
    	XK_kana_HI                     = 0x04cb,    // U+30D2 KATAKANA LETTER HI
    	XK_kana_FU                     = 0x04cc,    // U+30D5 KATAKANA LETTER HU
    	XK_kana_HU                     = 0x04cc,    // deprecated
    	XK_kana_HE                     = 0x04cd,    // U+30D8 KATAKANA LETTER HE
    	XK_kana_HO                     = 0x04ce,    // U+30DB KATAKANA LETTER HO
    	XK_kana_MA                     = 0x04cf,    // U+30DE KATAKANA LETTER MA
    	XK_kana_MI                     = 0x04d0,    // U+30DF KATAKANA LETTER MI
    	XK_kana_MU                     = 0x04d1,    // U+30E0 KATAKANA LETTER MU
    	XK_kana_ME                     = 0x04d2,    // U+30E1 KATAKANA LETTER ME
    	XK_kana_MO                     = 0x04d3,    // U+30E2 KATAKANA LETTER MO
    	XK_kana_YA                     = 0x04d4,    // U+30E4 KATAKANA LETTER YA
    	XK_kana_YU                     = 0x04d5,    // U+30E6 KATAKANA LETTER YU
    	XK_kana_YO                     = 0x04d6,    // U+30E8 KATAKANA LETTER YO
    	XK_kana_RA                     = 0x04d7,    // U+30E9 KATAKANA LETTER RA
    	XK_kana_RI                     = 0x04d8,    // U+30EA KATAKANA LETTER RI
    	XK_kana_RU                     = 0x04d9,    // U+30EB KATAKANA LETTER RU
    	XK_kana_RE                     = 0x04da,    // U+30EC KATAKANA LETTER RE
    	XK_kana_RO                     = 0x04db,    // U+30ED KATAKANA LETTER RO
    	XK_kana_WA                     = 0x04dc,    // U+30EF KATAKANA LETTER WA
    	XK_kana_N                      = 0x04dd,    // U+30F3 KATAKANA LETTER N
    	XK_voicedsound                 = 0x04de,    // U+309B KATAKANA-HIRAGANA VOICED SOUND MARK
    	XK_semivoicedsound             = 0x04df,    // U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
    	XK_kana_switch                 = 0xff7e,    // Alias for mode_switch
    	XK_Farsi_0                     = 0x10006f0, // U+06F0 EXTENDED ARABIC-INDIC DIGIT ZERO
    	XK_Farsi_1                     = 0x10006f1, // U+06F1 EXTENDED ARABIC-INDIC DIGIT ONE
    	XK_Farsi_2                     = 0x10006f2, // U+06F2 EXTENDED ARABIC-INDIC DIGIT TWO
    	XK_Farsi_3                     = 0x10006f3, // U+06F3 EXTENDED ARABIC-INDIC DIGIT THREE
    	XK_Farsi_4                     = 0x10006f4, // U+06F4 EXTENDED ARABIC-INDIC DIGIT FOUR
    	XK_Farsi_5                     = 0x10006f5, // U+06F5 EXTENDED ARABIC-INDIC DIGIT FIVE
    	XK_Farsi_6                     = 0x10006f6, // U+06F6 EXTENDED ARABIC-INDIC DIGIT SIX
    	XK_Farsi_7                     = 0x10006f7, // U+06F7 EXTENDED ARABIC-INDIC DIGIT SEVEN
    	XK_Farsi_8                     = 0x10006f8, // U+06F8 EXTENDED ARABIC-INDIC DIGIT EIGHT
    	XK_Farsi_9                     = 0x10006f9, // U+06F9 EXTENDED ARABIC-INDIC DIGIT NINE
    	XK_Arabic_percent              = 0x100066a, // U+066A ARABIC PERCENT SIGN
    	XK_Arabic_superscript_alef     = 0x1000670, // U+0670 ARABIC LETTER SUPERSCRIPT ALEF
    	XK_Arabic_tteh                 = 0x1000679, // U+0679 ARABIC LETTER TTEH
    	XK_Arabic_peh                  = 0x100067e, // U+067E ARABIC LETTER PEH
    	XK_Arabic_tcheh                = 0x1000686, // U+0686 ARABIC LETTER TCHEH
    	XK_Arabic_ddal                 = 0x1000688, // U+0688 ARABIC LETTER DDAL
    	XK_Arabic_rreh                 = 0x1000691, // U+0691 ARABIC LETTER RREH
    	XK_Arabic_comma                = 0x05ac,    // U+060C ARABIC COMMA
    	XK_Arabic_fullstop             = 0x10006d4, // U+06D4 ARABIC FULL STOP
    	XK_Arabic_0                    = 0x1000660, // U+0660 ARABIC-INDIC DIGIT ZERO
    	XK_Arabic_1                    = 0x1000661, // U+0661 ARABIC-INDIC DIGIT ONE
    	XK_Arabic_2                    = 0x1000662, // U+0662 ARABIC-INDIC DIGIT TWO
    	XK_Arabic_3                    = 0x1000663, // U+0663 ARABIC-INDIC DIGIT THREE
    	XK_Arabic_4                    = 0x1000664, // U+0664 ARABIC-INDIC DIGIT FOUR
    	XK_Arabic_5                    = 0x1000665, // U+0665 ARABIC-INDIC DIGIT FIVE
    	XK_Arabic_6                    = 0x1000666, // U+0666 ARABIC-INDIC DIGIT SIX
    	XK_Arabic_7                    = 0x1000667, // U+0667 ARABIC-INDIC DIGIT SEVEN
    	XK_Arabic_8                    = 0x1000668, // U+0668 ARABIC-INDIC DIGIT EIGHT
    	XK_Arabic_9                    = 0x1000669, // U+0669 ARABIC-INDIC DIGIT NINE
    	XK_Arabic_semicolon            = 0x05bb,    // U+061B ARABIC SEMICOLON
    	XK_Arabic_question_mark        = 0x05bf,    // U+061F ARABIC QUESTION MARK
    	XK_Arabic_hamza                = 0x05c1,    // U+0621 ARABIC LETTER HAMZA
    	XK_Arabic_maddaonalef          = 0x05c2,    // U+0622 ARABIC LETTER ALEF WITH MADDA ABOVE
    	XK_Arabic_hamzaonalef          = 0x05c3,    // U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
    	XK_Arabic_hamzaonwaw           = 0x05c4,    // U+0624 ARABIC LETTER WAW WITH HAMZA ABOVE
    	XK_Arabic_hamzaunderalef       = 0x05c5,    // U+0625 ARABIC LETTER ALEF WITH HAMZA BELOW
    	XK_Arabic_hamzaonyeh           = 0x05c6,    // U+0626 ARABIC LETTER YEH WITH HAMZA ABOVE
    	XK_Arabic_alef                 = 0x05c7,    // U+0627 ARABIC LETTER ALEF
    	XK_Arabic_beh                  = 0x05c8,    // U+0628 ARABIC LETTER BEH
    	XK_Arabic_tehmarbuta           = 0x05c9,    // U+0629 ARABIC LETTER TEH MARBUTA
    	XK_Arabic_teh                  = 0x05ca,    // U+062A ARABIC LETTER TEH
    	XK_Arabic_theh                 = 0x05cb,    // U+062B ARABIC LETTER THEH
    	XK_Arabic_jeem                 = 0x05cc,    // U+062C ARABIC LETTER JEEM
    	XK_Arabic_hah                  = 0x05cd,    // U+062D ARABIC LETTER HAH
    	XK_Arabic_khah                 = 0x05ce,    // U+062E ARABIC LETTER KHAH
    	XK_Arabic_dal                  = 0x05cf,    // U+062F ARABIC LETTER DAL
    	XK_Arabic_thal                 = 0x05d0,    // U+0630 ARABIC LETTER THAL
    	XK_Arabic_ra                   = 0x05d1,    // U+0631 ARABIC LETTER REH
    	XK_Arabic_zain                 = 0x05d2,    // U+0632 ARABIC LETTER ZAIN
    	XK_Arabic_seen                 = 0x05d3,    // U+0633 ARABIC LETTER SEEN
    	XK_Arabic_sheen                = 0x05d4,    // U+0634 ARABIC LETTER SHEEN
    	XK_Arabic_sad                  = 0x05d5,    // U+0635 ARABIC LETTER SAD
    	XK_Arabic_dad                  = 0x05d6,    // U+0636 ARABIC LETTER DAD
    	XK_Arabic_tah                  = 0x05d7,    // U+0637 ARABIC LETTER TAH
    	XK_Arabic_zah                  = 0x05d8,    // U+0638 ARABIC LETTER ZAH
    	XK_Arabic_ain                  = 0x05d9,    // U+0639 ARABIC LETTER AIN
    	XK_Arabic_ghain                = 0x05da,    // U+063A ARABIC LETTER GHAIN
    	XK_Arabic_tatweel              = 0x05e0,    // U+0640 ARABIC TATWEEL
    	XK_Arabic_feh                  = 0x05e1,    // U+0641 ARABIC LETTER FEH
    	XK_Arabic_qaf                  = 0x05e2,    // U+0642 ARABIC LETTER QAF
    	XK_Arabic_kaf                  = 0x05e3,    // U+0643 ARABIC LETTER KAF
    	XK_Arabic_lam                  = 0x05e4,    // U+0644 ARABIC LETTER LAM
    	XK_Arabic_meem                 = 0x05e5,    // U+0645 ARABIC LETTER MEEM
    	XK_Arabic_noon                 = 0x05e6,    // U+0646 ARABIC LETTER NOON
    	XK_Arabic_ha                   = 0x05e7,    // U+0647 ARABIC LETTER HEH
    	XK_Arabic_heh                  = 0x05e7,    // deprecated
    	XK_Arabic_waw                  = 0x05e8,    // U+0648 ARABIC LETTER WAW
    	XK_Arabic_alefmaksura          = 0x05e9,    // U+0649 ARABIC LETTER ALEF MAKSURA
    	XK_Arabic_yeh                  = 0x05ea,    // U+064A ARABIC LETTER YEH
    	XK_Arabic_fathatan             = 0x05eb,    // U+064B ARABIC FATHATAN
    	XK_Arabic_dammatan             = 0x05ec,    // U+064C ARABIC DAMMATAN
    	XK_Arabic_kasratan             = 0x05ed,    // U+064D ARABIC KASRATAN
    	XK_Arabic_fatha                = 0x05ee,    // U+064E ARABIC FATHA
    	XK_Arabic_damma                = 0x05ef,    // U+064F ARABIC DAMMA
    	XK_Arabic_kasra                = 0x05f0,    // U+0650 ARABIC KASRA
    	XK_Arabic_shadda               = 0x05f1,    // U+0651 ARABIC SHADDA
    	XK_Arabic_sukun                = 0x05f2,    // U+0652 ARABIC SUKUN
    	XK_Arabic_madda_above          = 0x1000653, // U+0653 ARABIC MADDAH ABOVE
    	XK_Arabic_hamza_above          = 0x1000654, // U+0654 ARABIC HAMZA ABOVE
    	XK_Arabic_hamza_below          = 0x1000655, // U+0655 ARABIC HAMZA BELOW
    	XK_Arabic_jeh                  = 0x1000698, // U+0698 ARABIC LETTER JEH
    	XK_Arabic_veh                  = 0x10006a4, // U+06A4 ARABIC LETTER VEH
    	XK_Arabic_keheh                = 0x10006a9, // U+06A9 ARABIC LETTER KEHEH
    	XK_Arabic_gaf                  = 0x10006af, // U+06AF ARABIC LETTER GAF
    	XK_Arabic_noon_ghunna          = 0x10006ba, // U+06BA ARABIC LETTER NOON GHUNNA
    	XK_Arabic_heh_doachashmee      = 0x10006be, // U+06BE ARABIC LETTER HEH DOACHASHMEE
    	XK_Farsi_yeh                   = 0x10006cc, // U+06CC ARABIC LETTER FARSI YEH
    	XK_Arabic_farsi_yeh            = 0x10006cc, // U+06CC ARABIC LETTER FARSI YEH
    	XK_Arabic_yeh_baree            = 0x10006d2, // U+06D2 ARABIC LETTER YEH BARREE
    	XK_Arabic_heh_goal             = 0x10006c1, // U+06C1 ARABIC LETTER HEH GOAL
    	XK_Arabic_switch               = 0xff7e,    // Alias for mode_switch
    	XK_Cyrillic_GHE_bar            = 0x1000492, // U+0492 CYRILLIC CAPITAL LETTER GHE WITH STROKE
    	XK_Cyrillic_ghe_bar            = 0x1000493, // U+0493 CYRILLIC SMALL LETTER GHE WITH STROKE
    	XK_Cyrillic_ZHE_descender      = 0x1000496, // U+0496 CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
    	XK_Cyrillic_zhe_descender      = 0x1000497, // U+0497 CYRILLIC SMALL LETTER ZHE WITH DESCENDER
    	XK_Cyrillic_KA_descender       = 0x100049a, // U+049A CYRILLIC CAPITAL LETTER KA WITH DESCENDER
    	XK_Cyrillic_ka_descender       = 0x100049b, // U+049B CYRILLIC SMALL LETTER KA WITH DESCENDER
    	XK_Cyrillic_KA_vertstroke      = 0x100049c, // U+049C CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
    	XK_Cyrillic_ka_vertstroke      = 0x100049d, // U+049D CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
    	XK_Cyrillic_EN_descender       = 0x10004a2, // U+04A2 CYRILLIC CAPITAL LETTER EN WITH DESCENDER
    	XK_Cyrillic_en_descender       = 0x10004a3, // U+04A3 CYRILLIC SMALL LETTER EN WITH DESCENDER
    	XK_Cyrillic_U_straight         = 0x10004ae, // U+04AE CYRILLIC CAPITAL LETTER STRAIGHT U
    	XK_Cyrillic_u_straight         = 0x10004af, // U+04AF CYRILLIC SMALL LETTER STRAIGHT U
    	XK_Cyrillic_U_straight_bar     = 0x10004b0, // U+04B0 CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
    	XK_Cyrillic_u_straight_bar     = 0x10004b1, // U+04B1 CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
    	XK_Cyrillic_HA_descender       = 0x10004b2, // U+04B2 CYRILLIC CAPITAL LETTER HA WITH DESCENDER
    	XK_Cyrillic_ha_descender       = 0x10004b3, // U+04B3 CYRILLIC SMALL LETTER HA WITH DESCENDER
    	XK_Cyrillic_CHE_descender      = 0x10004b6, // U+04B6 CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
    	XK_Cyrillic_che_descender      = 0x10004b7, // U+04B7 CYRILLIC SMALL LETTER CHE WITH DESCENDER
    	XK_Cyrillic_CHE_vertstroke     = 0x10004b8, // U+04B8 CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
    	XK_Cyrillic_che_vertstroke     = 0x10004b9, // U+04B9 CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
    	XK_Cyrillic_SHHA               = 0x10004ba, // U+04BA CYRILLIC CAPITAL LETTER SHHA
    	XK_Cyrillic_shha               = 0x10004bb, // U+04BB CYRILLIC SMALL LETTER SHHA
    	XK_Cyrillic_SCHWA              = 0x10004d8, // U+04D8 CYRILLIC CAPITAL LETTER SCHWA
    	XK_Cyrillic_schwa              = 0x10004d9, // U+04D9 CYRILLIC SMALL LETTER SCHWA
    	XK_Cyrillic_I_macron           = 0x10004e2, // U+04E2 CYRILLIC CAPITAL LETTER I WITH MACRON
    	XK_Cyrillic_i_macron           = 0x10004e3, // U+04E3 CYRILLIC SMALL LETTER I WITH MACRON
    	XK_Cyrillic_O_bar              = 0x10004e8, // U+04E8 CYRILLIC CAPITAL LETTER BARRED O
    	XK_Cyrillic_o_bar              = 0x10004e9, // U+04E9 CYRILLIC SMALL LETTER BARRED O
    	XK_Cyrillic_U_macron           = 0x10004ee, // U+04EE CYRILLIC CAPITAL LETTER U WITH MACRON
    	XK_Cyrillic_u_macron           = 0x10004ef, // U+04EF CYRILLIC SMALL LETTER U WITH MACRON
    	XK_Serbian_dje                 = 0x06a1,    // U+0452 CYRILLIC SMALL LETTER DJE
    	XK_Macedonia_gje               = 0x06a2,    // U+0453 CYRILLIC SMALL LETTER GJE
    	XK_Cyrillic_io                 = 0x06a3,    // U+0451 CYRILLIC SMALL LETTER IO
    	XK_Ukrainian_ie                = 0x06a4,    // U+0454 CYRILLIC SMALL LETTER UKRAINIAN IE
    	XK_Ukranian_je                 = 0x06a4,    // deprecated
    	XK_Macedonia_dse               = 0x06a5,    // U+0455 CYRILLIC SMALL LETTER DZE
    	XK_Ukrainian_i                 = 0x06a6,    // U+0456 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
    	XK_Ukranian_i                  = 0x06a6,    // deprecated
    	XK_Ukrainian_yi                = 0x06a7,    // U+0457 CYRILLIC SMALL LETTER YI
    	XK_Ukranian_yi                 = 0x06a7,    // deprecated
    	XK_Cyrillic_je                 = 0x06a8,    // U+0458 CYRILLIC SMALL LETTER JE
    	XK_Serbian_je                  = 0x06a8,    // deprecated
    	XK_Cyrillic_lje                = 0x06a9,    // U+0459 CYRILLIC SMALL LETTER LJE
    	XK_Serbian_lje                 = 0x06a9,    // deprecated
    	XK_Cyrillic_nje                = 0x06aa,    // U+045A CYRILLIC SMALL LETTER NJE
    	XK_Serbian_nje                 = 0x06aa,    // deprecated
    	XK_Serbian_tshe                = 0x06ab,    // U+045B CYRILLIC SMALL LETTER TSHE
    	XK_Macedonia_kje               = 0x06ac,    // U+045C CYRILLIC SMALL LETTER KJE
    	XK_Ukrainian_ghe_with_upturn   = 0x06ad,    // U+0491 CYRILLIC SMALL LETTER GHE WITH UPTURN
    	XK_Byelorussian_shortu         = 0x06ae,    // U+045E CYRILLIC SMALL LETTER SHORT U
    	XK_Cyrillic_dzhe               = 0x06af,    // U+045F CYRILLIC SMALL LETTER DZHE
    	XK_Serbian_dze                 = 0x06af,    // deprecated
    	XK_numerosign                  = 0x06b0,    // U+2116 NUMERO SIGN
    	XK_Serbian_DJE                 = 0x06b1,    // U+0402 CYRILLIC CAPITAL LETTER DJE
    	XK_Macedonia_GJE               = 0x06b2,    // U+0403 CYRILLIC CAPITAL LETTER GJE
    	XK_Cyrillic_IO                 = 0x06b3,    // U+0401 CYRILLIC CAPITAL LETTER IO
    	XK_Ukrainian_IE                = 0x06b4,    // U+0404 CYRILLIC CAPITAL LETTER UKRAINIAN IE
    	XK_Ukranian_JE                 = 0x06b4,    // deprecated
    	XK_Macedonia_DSE               = 0x06b5,    // U+0405 CYRILLIC CAPITAL LETTER DZE
    	XK_Ukrainian_I                 = 0x06b6,    // U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
    	XK_Ukranian_I                  = 0x06b6,    // deprecated
    	XK_Ukrainian_YI                = 0x06b7,    // U+0407 CYRILLIC CAPITAL LETTER YI
    	XK_Ukranian_YI                 = 0x06b7,    // deprecated
    	XK_Cyrillic_JE                 = 0x06b8,    // U+0408 CYRILLIC CAPITAL LETTER JE
    	XK_Serbian_JE                  = 0x06b8,    // deprecated
    	XK_Cyrillic_LJE                = 0x06b9,    // U+0409 CYRILLIC CAPITAL LETTER LJE
    	XK_Serbian_LJE                 = 0x06b9,    // deprecated
    	XK_Cyrillic_NJE                = 0x06ba,    // U+040A CYRILLIC CAPITAL LETTER NJE
    	XK_Serbian_NJE                 = 0x06ba,    // deprecated
    	XK_Serbian_TSHE                = 0x06bb,    // U+040B CYRILLIC CAPITAL LETTER TSHE
    	XK_Macedonia_KJE               = 0x06bc,    // U+040C CYRILLIC CAPITAL LETTER KJE
    	XK_Ukrainian_GHE_WITH_UPTURN   = 0x06bd,    // U+0490 CYRILLIC CAPITAL LETTER GHE WITH UPTURN
    	XK_Byelorussian_SHORTU         = 0x06be,    // U+040E CYRILLIC CAPITAL LETTER SHORT U
    	XK_Cyrillic_DZHE               = 0x06bf,    // U+040F CYRILLIC CAPITAL LETTER DZHE
    	XK_Serbian_DZE                 = 0x06bf,    // deprecated
    	XK_Cyrillic_yu                 = 0x06c0,    // U+044E CYRILLIC SMALL LETTER YU
    	XK_Cyrillic_a                  = 0x06c1,    // U+0430 CYRILLIC SMALL LETTER A
    	XK_Cyrillic_be                 = 0x06c2,    // U+0431 CYRILLIC SMALL LETTER BE
    	XK_Cyrillic_tse                = 0x06c3,    // U+0446 CYRILLIC SMALL LETTER TSE
    	XK_Cyrillic_de                 = 0x06c4,    // U+0434 CYRILLIC SMALL LETTER DE
    	XK_Cyrillic_ie                 = 0x06c5,    // U+0435 CYRILLIC SMALL LETTER IE
    	XK_Cyrillic_ef                 = 0x06c6,    // U+0444 CYRILLIC SMALL LETTER EF
    	XK_Cyrillic_ghe                = 0x06c7,    // U+0433 CYRILLIC SMALL LETTER GHE
    	XK_Cyrillic_ha                 = 0x06c8,    // U+0445 CYRILLIC SMALL LETTER HA
    	XK_Cyrillic_i                  = 0x06c9,    // U+0438 CYRILLIC SMALL LETTER I
    	XK_Cyrillic_shorti             = 0x06ca,    // U+0439 CYRILLIC SMALL LETTER SHORT I
    	XK_Cyrillic_ka                 = 0x06cb,    // U+043A CYRILLIC SMALL LETTER KA
    	XK_Cyrillic_el                 = 0x06cc,    // U+043B CYRILLIC SMALL LETTER EL
    	XK_Cyrillic_em                 = 0x06cd,    // U+043C CYRILLIC SMALL LETTER EM
    	XK_Cyrillic_en                 = 0x06ce,    // U+043D CYRILLIC SMALL LETTER EN
    	XK_Cyrillic_o                  = 0x06cf,    // U+043E CYRILLIC SMALL LETTER O
    	XK_Cyrillic_pe                 = 0x06d0,    // U+043F CYRILLIC SMALL LETTER PE
    	XK_Cyrillic_ya                 = 0x06d1,    // U+044F CYRILLIC SMALL LETTER YA
    	XK_Cyrillic_er                 = 0x06d2,    // U+0440 CYRILLIC SMALL LETTER ER
    	XK_Cyrillic_es                 = 0x06d3,    // U+0441 CYRILLIC SMALL LETTER ES
    	XK_Cyrillic_te                 = 0x06d4,    // U+0442 CYRILLIC SMALL LETTER TE
    	XK_Cyrillic_u                  = 0x06d5,    // U+0443 CYRILLIC SMALL LETTER U
    	XK_Cyrillic_zhe                = 0x06d6,    // U+0436 CYRILLIC SMALL LETTER ZHE
    	XK_Cyrillic_ve                 = 0x06d7,    // U+0432 CYRILLIC SMALL LETTER VE
    	XK_Cyrillic_softsign           = 0x06d8,    // U+044C CYRILLIC SMALL LETTER SOFT SIGN
    	XK_Cyrillic_yeru               = 0x06d9,    // U+044B CYRILLIC SMALL LETTER YERU
    	XK_Cyrillic_ze                 = 0x06da,    // U+0437 CYRILLIC SMALL LETTER ZE
    	XK_Cyrillic_sha                = 0x06db,    // U+0448 CYRILLIC SMALL LETTER SHA
    	XK_Cyrillic_e                  = 0x06dc,    // U+044D CYRILLIC SMALL LETTER E
    	XK_Cyrillic_shcha              = 0x06dd,    // U+0449 CYRILLIC SMALL LETTER SHCHA
    	XK_Cyrillic_che                = 0x06de,    // U+0447 CYRILLIC SMALL LETTER CHE
    	XK_Cyrillic_hardsign           = 0x06df,    // U+044A CYRILLIC SMALL LETTER HARD SIGN
    	XK_Cyrillic_YU                 = 0x06e0,    // U+042E CYRILLIC CAPITAL LETTER YU
    	XK_Cyrillic_A                  = 0x06e1,    // U+0410 CYRILLIC CAPITAL LETTER A
    	XK_Cyrillic_BE                 = 0x06e2,    // U+0411 CYRILLIC CAPITAL LETTER BE
    	XK_Cyrillic_TSE                = 0x06e3,    // U+0426 CYRILLIC CAPITAL LETTER TSE
    	XK_Cyrillic_DE                 = 0x06e4,    // U+0414 CYRILLIC CAPITAL LETTER DE
    	XK_Cyrillic_IE                 = 0x06e5,    // U+0415 CYRILLIC CAPITAL LETTER IE
    	XK_Cyrillic_EF                 = 0x06e6,    // U+0424 CYRILLIC CAPITAL LETTER EF
    	XK_Cyrillic_GHE                = 0x06e7,    // U+0413 CYRILLIC CAPITAL LETTER GHE
    	XK_Cyrillic_HA                 = 0x06e8,    // U+0425 CYRILLIC CAPITAL LETTER HA
    	XK_Cyrillic_I                  = 0x06e9,    // U+0418 CYRILLIC CAPITAL LETTER I
    	XK_Cyrillic_SHORTI             = 0x06ea,    // U+0419 CYRILLIC CAPITAL LETTER SHORT I
    	XK_Cyrillic_KA                 = 0x06eb,    // U+041A CYRILLIC CAPITAL LETTER KA
    	XK_Cyrillic_EL                 = 0x06ec,    // U+041B CYRILLIC CAPITAL LETTER EL
    	XK_Cyrillic_EM                 = 0x06ed,    // U+041C CYRILLIC CAPITAL LETTER EM
    	XK_Cyrillic_EN                 = 0x06ee,    // U+041D CYRILLIC CAPITAL LETTER EN
    	XK_Cyrillic_O                  = 0x06ef,    // U+041E CYRILLIC CAPITAL LETTER O
    	XK_Cyrillic_PE                 = 0x06f0,    // U+041F CYRILLIC CAPITAL LETTER PE
    	XK_Cyrillic_YA                 = 0x06f1,    // U+042F CYRILLIC CAPITAL LETTER YA
    	XK_Cyrillic_ER                 = 0x06f2,    // U+0420 CYRILLIC CAPITAL LETTER ER
    	XK_Cyrillic_ES                 = 0x06f3,    // U+0421 CYRILLIC CAPITAL LETTER ES
    	XK_Cyrillic_TE                 = 0x06f4,    // U+0422 CYRILLIC CAPITAL LETTER TE
    	XK_Cyrillic_U                  = 0x06f5,    // U+0423 CYRILLIC CAPITAL LETTER U
    	XK_Cyrillic_ZHE                = 0x06f6,    // U+0416 CYRILLIC CAPITAL LETTER ZHE
    	XK_Cyrillic_VE                 = 0x06f7,    // U+0412 CYRILLIC CAPITAL LETTER VE
    	XK_Cyrillic_SOFTSIGN           = 0x06f8,    // U+042C CYRILLIC CAPITAL LETTER SOFT SIGN
    	XK_Cyrillic_YERU               = 0x06f9,    // U+042B CYRILLIC CAPITAL LETTER YERU
    	XK_Cyrillic_ZE                 = 0x06fa,    // U+0417 CYRILLIC CAPITAL LETTER ZE
    	XK_Cyrillic_SHA                = 0x06fb,    // U+0428 CYRILLIC CAPITAL LETTER SHA
    	XK_Cyrillic_E                  = 0x06fc,    // U+042D CYRILLIC CAPITAL LETTER E
    	XK_Cyrillic_SHCHA              = 0x06fd,    // U+0429 CYRILLIC CAPITAL LETTER SHCHA
    	XK_Cyrillic_CHE                = 0x06fe,    // U+0427 CYRILLIC CAPITAL LETTER CHE
    	XK_Cyrillic_HARDSIGN           = 0x06ff,    // U+042A CYRILLIC CAPITAL LETTER HARD SIGN
    	XK_Greek_ALPHAaccent           = 0x07a1,    // U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
    	XK_Greek_EPSILONaccent         = 0x07a2,    // U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
    	XK_Greek_ETAaccent             = 0x07a3,    // U+0389 GREEK CAPITAL LETTER ETA WITH TONOS
    	XK_Greek_IOTAaccent            = 0x07a4,    // U+038A GREEK CAPITAL LETTER IOTA WITH TONOS
    	XK_Greek_IOTAdieresis          = 0x07a5,    // U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
    	XK_Greek_IOTAdiaeresis         = 0x07a5,    // old typo
    	XK_Greek_OMICRONaccent         = 0x07a7,    // U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS
    	XK_Greek_UPSILONaccent         = 0x07a8,    // U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS
    	XK_Greek_UPSILONdieresis       = 0x07a9,    // U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
    	XK_Greek_OMEGAaccent           = 0x07ab,    // U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS
    	XK_Greek_accentdieresis        = 0x07ae,    // U+0385 GREEK DIALYTIKA TONOS
    	XK_Greek_horizbar              = 0x07af,    // U+2015 HORIZONTAL BAR
    	XK_Greek_alphaaccent           = 0x07b1,    // U+03AC GREEK SMALL LETTER ALPHA WITH TONOS
    	XK_Greek_epsilonaccent         = 0x07b2,    // U+03AD GREEK SMALL LETTER EPSILON WITH TONOS
    	XK_Greek_etaaccent             = 0x07b3,    // U+03AE GREEK SMALL LETTER ETA WITH TONOS
    	XK_Greek_iotaaccent            = 0x07b4,    // U+03AF GREEK SMALL LETTER IOTA WITH TONOS
    	XK_Greek_iotadieresis          = 0x07b5,    // U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
    	XK_Greek_iotaaccentdieresis    = 0x07b6,    // U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
    	XK_Greek_omicronaccent         = 0x07b7,    // U+03CC GREEK SMALL LETTER OMICRON WITH TONOS
    	XK_Greek_upsilonaccent         = 0x07b8,    // U+03CD GREEK SMALL LETTER UPSILON WITH TONOS
    	XK_Greek_upsilondieresis       = 0x07b9,    // U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
    	XK_Greek_upsilonaccentdieresis = 0x07ba,    // U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
    	XK_Greek_omegaaccent           = 0x07bb,    // U+03CE GREEK SMALL LETTER OMEGA WITH TONOS
    	XK_Greek_ALPHA                 = 0x07c1,    // U+0391 GREEK CAPITAL LETTER ALPHA
    	XK_Greek_BETA                  = 0x07c2,    // U+0392 GREEK CAPITAL LETTER BETA
    	XK_Greek_GAMMA                 = 0x07c3,    // U+0393 GREEK CAPITAL LETTER GAMMA
    	XK_Greek_DELTA                 = 0x07c4,    // U+0394 GREEK CAPITAL LETTER DELTA
    	XK_Greek_EPSILON               = 0x07c5,    // U+0395 GREEK CAPITAL LETTER EPSILON
    	XK_Greek_ZETA                  = 0x07c6,    // U+0396 GREEK CAPITAL LETTER ZETA
    	XK_Greek_ETA                   = 0x07c7,    // U+0397 GREEK CAPITAL LETTER ETA
    	XK_Greek_THETA                 = 0x07c8,    // U+0398 GREEK CAPITAL LETTER THETA
    	XK_Greek_IOTA                  = 0x07c9,    // U+0399 GREEK CAPITAL LETTER IOTA
    	XK_Greek_KAPPA                 = 0x07ca,    // U+039A GREEK CAPITAL LETTER KAPPA
    	XK_Greek_LAMDA                 = 0x07cb,    // U+039B GREEK CAPITAL LETTER LAMDA
    	XK_Greek_LAMBDA                = 0x07cb,    // U+039B GREEK CAPITAL LETTER LAMDA
    	XK_Greek_MU                    = 0x07cc,    // U+039C GREEK CAPITAL LETTER MU
    	XK_Greek_NU                    = 0x07cd,    // U+039D GREEK CAPITAL LETTER NU
    	XK_Greek_XI                    = 0x07ce,    // U+039E GREEK CAPITAL LETTER XI
    	XK_Greek_OMICRON               = 0x07cf,    // U+039F GREEK CAPITAL LETTER OMICRON
    	XK_Greek_PI                    = 0x07d0,    // U+03A0 GREEK CAPITAL LETTER PI
    	XK_Greek_RHO                   = 0x07d1,    // U+03A1 GREEK CAPITAL LETTER RHO
    	XK_Greek_SIGMA                 = 0x07d2,    // U+03A3 GREEK CAPITAL LETTER SIGMA
    	XK_Greek_TAU                   = 0x07d4,    // U+03A4 GREEK CAPITAL LETTER TAU
    	XK_Greek_UPSILON               = 0x07d5,    // U+03A5 GREEK CAPITAL LETTER UPSILON
    	XK_Greek_PHI                   = 0x07d6,    // U+03A6 GREEK CAPITAL LETTER PHI
    	XK_Greek_CHI                   = 0x07d7,    // U+03A7 GREEK CAPITAL LETTER CHI
    	XK_Greek_PSI                   = 0x07d8,    // U+03A8 GREEK CAPITAL LETTER PSI
    	XK_Greek_OMEGA                 = 0x07d9,    // U+03A9 GREEK CAPITAL LETTER OMEGA
    	XK_Greek_alpha                 = 0x07e1,    // U+03B1 GREEK SMALL LETTER ALPHA
    	XK_Greek_beta                  = 0x07e2,    // U+03B2 GREEK SMALL LETTER BETA
    	XK_Greek_gamma                 = 0x07e3,    // U+03B3 GREEK SMALL LETTER GAMMA
    	XK_Greek_delta                 = 0x07e4,    // U+03B4 GREEK SMALL LETTER DELTA
    	XK_Greek_epsilon               = 0x07e5,    // U+03B5 GREEK SMALL LETTER EPSILON
    	XK_Greek_zeta                  = 0x07e6,    // U+03B6 GREEK SMALL LETTER ZETA
    	XK_Greek_eta                   = 0x07e7,    // U+03B7 GREEK SMALL LETTER ETA
    	XK_Greek_theta                 = 0x07e8,    // U+03B8 GREEK SMALL LETTER THETA
    	XK_Greek_iota                  = 0x07e9,    // U+03B9 GREEK SMALL LETTER IOTA
    	XK_Greek_kappa                 = 0x07ea,    // U+03BA GREEK SMALL LETTER KAPPA
    	XK_Greek_lamda                 = 0x07eb,    // U+03BB GREEK SMALL LETTER LAMDA
    	XK_Greek_lambda                = 0x07eb,    // U+03BB GREEK SMALL LETTER LAMDA
    	XK_Greek_mu                    = 0x07ec,    // U+03BC GREEK SMALL LETTER MU
    	XK_Greek_nu                    = 0x07ed,    // U+03BD GREEK SMALL LETTER NU
    	XK_Greek_xi                    = 0x07ee,    // U+03BE GREEK SMALL LETTER XI
    	XK_Greek_omicron               = 0x07ef,    // U+03BF GREEK SMALL LETTER OMICRON
    	XK_Greek_pi                    = 0x07f0,    // U+03C0 GREEK SMALL LETTER PI
    	XK_Greek_rho                   = 0x07f1,    // U+03C1 GREEK SMALL LETTER RHO
    	XK_Greek_sigma                 = 0x07f2,    // U+03C3 GREEK SMALL LETTER SIGMA
    	XK_Greek_finalsmallsigma       = 0x07f3,    // U+03C2 GREEK SMALL LETTER FINAL SIGMA
    	XK_Greek_tau                   = 0x07f4,    // U+03C4 GREEK SMALL LETTER TAU
    	XK_Greek_upsilon               = 0x07f5,    // U+03C5 GREEK SMALL LETTER UPSILON
    	XK_Greek_phi                   = 0x07f6,    // U+03C6 GREEK SMALL LETTER PHI
    	XK_Greek_chi                   = 0x07f7,    // U+03C7 GREEK SMALL LETTER CHI
    	XK_Greek_psi                   = 0x07f8,    // U+03C8 GREEK SMALL LETTER PSI
    	XK_Greek_omega                 = 0x07f9,    // U+03C9 GREEK SMALL LETTER OMEGA
    	XK_Greek_switch                = 0xff7e,    // Alias for mode_switch
    	XK_leftradical                 = 0x08a1,    // U+23B7 RADICAL SYMBOL BOTTOM
    	XK_topleftradical              = 0x08a2,    // (U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT)
    	XK_horizconnector              = 0x08a3,    // (U+2500 BOX DRAWINGS LIGHT HORIZONTAL)
    	XK_topintegral                 = 0x08a4,    // U+2320 TOP HALF INTEGRAL
    	XK_botintegral                 = 0x08a5,    // U+2321 BOTTOM HALF INTEGRAL
    	XK_vertconnector               = 0x08a6,    // (U+2502 BOX DRAWINGS LIGHT VERTICAL)
    	XK_topleftsqbracket            = 0x08a7,    // U+23A1 LEFT SQUARE BRACKET UPPER CORNER
    	XK_botleftsqbracket            = 0x08a8,    // U+23A3 LEFT SQUARE BRACKET LOWER CORNER
    	XK_toprightsqbracket           = 0x08a9,    // U+23A4 RIGHT SQUARE BRACKET UPPER CORNER
    	XK_botrightsqbracket           = 0x08aa,    // U+23A6 RIGHT SQUARE BRACKET LOWER CORNER
    	XK_topleftparens               = 0x08ab,    // U+239B LEFT PARENTHESIS UPPER HOOK
    	XK_botleftparens               = 0x08ac,    // U+239D LEFT PARENTHESIS LOWER HOOK
    	XK_toprightparens              = 0x08ad,    // U+239E RIGHT PARENTHESIS UPPER HOOK
    	XK_botrightparens              = 0x08ae,    // U+23A0 RIGHT PARENTHESIS LOWER HOOK
    	XK_leftmiddlecurlybrace        = 0x08af,    // U+23A8 LEFT CURLY BRACKET MIDDLE PIECE
    	XK_rightmiddlecurlybrace       = 0x08b0,    // U+23AC RIGHT CURLY BRACKET MIDDLE PIECE
    	XK_topleftsummation            = 0x08b1, 
    	XK_botleftsummation            = 0x08b2, 
    	XK_topvertsummationconnector   = 0x08b3, 
    	XK_botvertsummationconnector   = 0x08b4, 
    	XK_toprightsummation           = 0x08b5, 
    	XK_botrightsummation           = 0x08b6, 
    	XK_rightmiddlesummation        = 0x08b7, 
    	XK_lessthanequal               = 0x08bc,    // U+2264 LESS-THAN OR EQUAL TO
    	XK_notequal                    = 0x08bd,    // U+2260 NOT EQUAL TO
    	XK_greaterthanequal            = 0x08be,    // U+2265 GREATER-THAN OR EQUAL TO
    	XK_integral                    = 0x08bf,    // U+222B INTEGRAL
    	XK_therefore                   = 0x08c0,    // U+2234 THEREFORE
    	XK_variation                   = 0x08c1,    // U+221D PROPORTIONAL TO
    	XK_infinity                    = 0x08c2,    // U+221E INFINITY
    	XK_nabla                       = 0x08c5,    // U+2207 NABLA
    	XK_approximate                 = 0x08c8,    // U+223C TILDE OPERATOR
    	XK_similarequal                = 0x08c9,    // U+2243 ASYMPTOTICALLY EQUAL TO
    	XK_ifonlyif                    = 0x08cd,    // U+21D4 LEFT RIGHT DOUBLE ARROW
    	XK_implies                     = 0x08ce,    // U+21D2 RIGHTWARDS DOUBLE ARROW
    	XK_identical                   = 0x08cf,    // U+2261 IDENTICAL TO
    	XK_radical                     = 0x08d6,    // U+221A SQUARE ROOT
    	XK_includedin                  = 0x08da,    // U+2282 SUBSET OF
    	XK_includes                    = 0x08db,    // U+2283 SUPERSET OF
    	XK_intersection                = 0x08dc,    // U+2229 INTERSECTION
    	XK_union                       = 0x08dd,    // U+222A UNION
    	XK_logicaland                  = 0x08de,    // U+2227 LOGICAL AND
    	XK_logicalor                   = 0x08df,    // U+2228 LOGICAL OR
    	XK_partialderivative           = 0x08ef,    // U+2202 PARTIAL DIFFERENTIAL
    	XK_function                    = 0x08f6,    // U+0192 LATIN SMALL LETTER F WITH HOOK
    	XK_leftarrow                   = 0x08fb,    // U+2190 LEFTWARDS ARROW
    	XK_uparrow                     = 0x08fc,    // U+2191 UPWARDS ARROW
    	XK_rightarrow                  = 0x08fd,    // U+2192 RIGHTWARDS ARROW
    	XK_downarrow                   = 0x08fe,    // U+2193 DOWNWARDS ARROW
    	XK_blank                       = 0x09df, 
    	XK_soliddiamond                = 0x09e0,    // U+25C6 BLACK DIAMOND
    	XK_checkerboard                = 0x09e1,    // U+2592 MEDIUM SHADE
    	XK_ht                          = 0x09e2,    // U+2409 SYMBOL FOR HORIZONTAL TABULATION
    	XK_ff                          = 0x09e3,    // U+240C SYMBOL FOR FORM FEED
    	XK_cr                          = 0x09e4,    // U+240D SYMBOL FOR CARRIAGE RETURN
    	XK_lf                          = 0x09e5,    // U+240A SYMBOL FOR LINE FEED
    	XK_nl                          = 0x09e8,    // U+2424 SYMBOL FOR NEWLINE
    	XK_vt                          = 0x09e9,    // U+240B SYMBOL FOR VERTICAL TABULATION
    	XK_lowrightcorner              = 0x09ea,    // U+2518 BOX DRAWINGS LIGHT UP AND LEFT
    	XK_uprightcorner               = 0x09eb,    // U+2510 BOX DRAWINGS LIGHT DOWN AND LEFT
    	XK_upleftcorner                = 0x09ec,    // U+250C BOX DRAWINGS LIGHT DOWN AND RIGHT
    	XK_lowleftcorner               = 0x09ed,    // U+2514 BOX DRAWINGS LIGHT UP AND RIGHT
    	XK_crossinglines               = 0x09ee,    // U+253C BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
    	XK_horizlinescan1              = 0x09ef,    // U+23BA HORIZONTAL SCAN LINE-1
    	XK_horizlinescan3              = 0x09f0,    // U+23BB HORIZONTAL SCAN LINE-3
    	XK_horizlinescan5              = 0x09f1,    // U+2500 BOX DRAWINGS LIGHT HORIZONTAL
    	XK_horizlinescan7              = 0x09f2,    // U+23BC HORIZONTAL SCAN LINE-7
    	XK_horizlinescan9              = 0x09f3,    // U+23BD HORIZONTAL SCAN LINE-9
    	XK_leftt                       = 0x09f4,    // U+251C BOX DRAWINGS LIGHT VERTICAL AND RIGHT
    	XK_rightt                      = 0x09f5,    // U+2524 BOX DRAWINGS LIGHT VERTICAL AND LEFT
    	XK_bott                        = 0x09f6,    // U+2534 BOX DRAWINGS LIGHT UP AND HORIZONTAL
    	XK_topt                        = 0x09f7,    // U+252C BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
    	XK_vertbar                     = 0x09f8,    // U+2502 BOX DRAWINGS LIGHT VERTICAL
    	XK_emspace                     = 0x0aa1,    // U+2003 EM SPACE
    	XK_enspace                     = 0x0aa2,    // U+2002 EN SPACE
    	XK_em3space                    = 0x0aa3,    // U+2004 THREE-PER-EM SPACE
    	XK_em4space                    = 0x0aa4,    // U+2005 FOUR-PER-EM SPACE
    	XK_digitspace                  = 0x0aa5,    // U+2007 FIGURE SPACE
    	XK_punctspace                  = 0x0aa6,    // U+2008 PUNCTUATION SPACE
    	XK_thinspace                   = 0x0aa7,    // U+2009 THIN SPACE
    	XK_hairspace                   = 0x0aa8,    // U+200A HAIR SPACE
    	XK_emdash                      = 0x0aa9,    // U+2014 EM DASH
    	XK_endash                      = 0x0aaa,    // U+2013 EN DASH
    	XK_signifblank                 = 0x0aac,    // (U+2423 OPEN BOX)
    	XK_ellipsis                    = 0x0aae,    // U+2026 HORIZONTAL ELLIPSIS
    	XK_doubbaselinedot             = 0x0aaf,    // U+2025 TWO DOT LEADER
    	XK_onethird                    = 0x0ab0,    // U+2153 VULGAR FRACTION ONE THIRD
    	XK_twothirds                   = 0x0ab1,    // U+2154 VULGAR FRACTION TWO THIRDS
    	XK_onefifth                    = 0x0ab2,    // U+2155 VULGAR FRACTION ONE FIFTH
    	XK_twofifths                   = 0x0ab3,    // U+2156 VULGAR FRACTION TWO FIFTHS
    	XK_threefifths                 = 0x0ab4,    // U+2157 VULGAR FRACTION THREE FIFTHS
    	XK_fourfifths                  = 0x0ab5,    // U+2158 VULGAR FRACTION FOUR FIFTHS
    	XK_onesixth                    = 0x0ab6,    // U+2159 VULGAR FRACTION ONE SIXTH
    	XK_fivesixths                  = 0x0ab7,    // U+215A VULGAR FRACTION FIVE SIXTHS
    	XK_careof                      = 0x0ab8,    // U+2105 CARE OF
    	XK_figdash                     = 0x0abb,    // U+2012 FIGURE DASH
    	XK_leftanglebracket            = 0x0abc,    // (U+27E8 MATHEMATICAL LEFT ANGLE BRACKET)
    	XK_decimalpoint                = 0x0abd,    // (U+002E FULL STOP)
    	XK_rightanglebracket           = 0x0abe,    // (U+27E9 MATHEMATICAL RIGHT ANGLE BRACKET)
    	XK_marker                      = 0x0abf, 
    	XK_oneeighth                   = 0x0ac3,    // U+215B VULGAR FRACTION ONE EIGHTH
    	XK_threeeighths                = 0x0ac4,    // U+215C VULGAR FRACTION THREE EIGHTHS
    	XK_fiveeighths                 = 0x0ac5,    // U+215D VULGAR FRACTION FIVE EIGHTHS
    	XK_seveneighths                = 0x0ac6,    // U+215E VULGAR FRACTION SEVEN EIGHTHS
    	XK_trademark                   = 0x0ac9,    // U+2122 TRADE MARK SIGN
    	XK_signaturemark               = 0x0aca,    // (U+2613 SALTIRE)
    	XK_trademarkincircle           = 0x0acb, 
    	XK_leftopentriangle            = 0x0acc,    // (U+25C1 WHITE LEFT-POINTING TRIANGLE)
    	XK_rightopentriangle           = 0x0acd,    // (U+25B7 WHITE RIGHT-POINTING TRIANGLE)
    	XK_emopencircle                = 0x0ace,    // (U+25CB WHITE CIRCLE)
    	XK_emopenrectangle             = 0x0acf,    // (U+25AF WHITE VERTICAL RECTANGLE)
    	XK_leftsinglequotemark         = 0x0ad0,    // U+2018 LEFT SINGLE QUOTATION MARK
    	XK_rightsinglequotemark        = 0x0ad1,    // U+2019 RIGHT SINGLE QUOTATION MARK
    	XK_leftdoublequotemark         = 0x0ad2,    // U+201C LEFT DOUBLE QUOTATION MARK
    	XK_rightdoublequotemark        = 0x0ad3,    // U+201D RIGHT DOUBLE QUOTATION MARK
    	XK_prescription                = 0x0ad4,    // U+211E PRESCRIPTION TAKE
    	XK_minutes                     = 0x0ad6,    // U+2032 PRIME
    	XK_seconds                     = 0x0ad7,    // U+2033 DOUBLE PRIME
    	XK_latincross                  = 0x0ad9,    // U+271D LATIN CROSS
    	XK_hexagram                    = 0x0ada, 
    	XK_filledrectbullet            = 0x0adb,    // (U+25AC BLACK RECTANGLE)
    	XK_filledlefttribullet         = 0x0adc,    // (U+25C0 BLACK LEFT-POINTING TRIANGLE)
    	XK_filledrighttribullet        = 0x0add,    // (U+25B6 BLACK RIGHT-POINTING TRIANGLE)
    	XK_emfilledcircle              = 0x0ade,    // (U+25CF BLACK CIRCLE)
    	XK_emfilledrect                = 0x0adf,    // (U+25AE BLACK VERTICAL RECTANGLE)
    	XK_enopencircbullet            = 0x0ae0,    // (U+25E6 WHITE BULLET)
    	XK_enopensquarebullet          = 0x0ae1,    // (U+25AB WHITE SMALL SQUARE)
    	XK_openrectbullet              = 0x0ae2,    // (U+25AD WHITE RECTANGLE)
    	XK_opentribulletup             = 0x0ae3,    // (U+25B3 WHITE UP-POINTING TRIANGLE)
    	XK_opentribulletdown           = 0x0ae4,    // (U+25BD WHITE DOWN-POINTING TRIANGLE)
    	XK_openstar                    = 0x0ae5,    // (U+2606 WHITE STAR)
    	XK_enfilledcircbullet          = 0x0ae6,    // (U+2022 BULLET)
    	XK_enfilledsqbullet            = 0x0ae7,    // (U+25AA BLACK SMALL SQUARE)
    	XK_filledtribulletup           = 0x0ae8,    // (U+25B2 BLACK UP-POINTING TRIANGLE)
    	XK_filledtribulletdown         = 0x0ae9,    // (U+25BC BLACK DOWN-POINTING TRIANGLE)
    	XK_leftpointer                 = 0x0aea,    // (U+261C WHITE LEFT POINTING INDEX)
    	XK_rightpointer                = 0x0aeb,    // (U+261E WHITE RIGHT POINTING INDEX)
    	XK_club                        = 0x0aec,    // U+2663 BLACK CLUB SUIT
    	XK_diamond                     = 0x0aed,    // U+2666 BLACK DIAMOND SUIT
    	XK_heart                       = 0x0aee,    // U+2665 BLACK HEART SUIT
    	XK_maltesecross                = 0x0af0,    // U+2720 MALTESE CROSS
    	XK_dagger                      = 0x0af1,    // U+2020 DAGGER
    	XK_doubledagger                = 0x0af2,    // U+2021 DOUBLE DAGGER
    	XK_checkmark                   = 0x0af3,    // U+2713 CHECK MARK
    	XK_ballotcross                 = 0x0af4,    // U+2717 BALLOT X
    	XK_musicalsharp                = 0x0af5,    // U+266F MUSIC SHARP SIGN
    	XK_musicalflat                 = 0x0af6,    // U+266D MUSIC FLAT SIGN
    	XK_malesymbol                  = 0x0af7,    // U+2642 MALE SIGN
    	XK_femalesymbol                = 0x0af8,    // U+2640 FEMALE SIGN
    	XK_telephone                   = 0x0af9,    // U+260E BLACK TELEPHONE
    	XK_telephonerecorder           = 0x0afa,    // U+2315 TELEPHONE RECORDER
    	XK_phonographcopyright         = 0x0afb,    // U+2117 SOUND RECORDING COPYRIGHT
    	XK_caret                       = 0x0afc,    // U+2038 CARET
    	XK_singlelowquotemark          = 0x0afd,    // U+201A SINGLE LOW-9 QUOTATION MARK
    	XK_doublelowquotemark          = 0x0afe,    // U+201E DOUBLE LOW-9 QUOTATION MARK
    	XK_cursor                      = 0x0aff, 
    	XK_leftcaret                   = 0x0ba3,    // (U+003C LESS-THAN SIGN)
    	XK_rightcaret                  = 0x0ba6,    // (U+003E GREATER-THAN SIGN)
    	XK_downcaret                   = 0x0ba8,    // (U+2228 LOGICAL OR)
    	XK_upcaret                     = 0x0ba9,    // (U+2227 LOGICAL AND)
    	XK_overbar                     = 0x0bc0,    // (U+00AF MACRON)
    	XK_downtack                    = 0x0bc2,    // U+22A5 UP TACK
    	XK_upshoe                      = 0x0bc3,    // (U+2229 INTERSECTION)
    	XK_downstile                   = 0x0bc4,    // U+230A LEFT FLOOR
    	XK_underbar                    = 0x0bc6,    // (U+005F LOW LINE)
    	XK_jot                         = 0x0bca,    // U+2218 RING OPERATOR
    	XK_quad                        = 0x0bcc,    // U+2395 APL FUNCTIONAL SYMBOL QUAD
    	XK_uptack                      = 0x0bce,    // U+22A4 DOWN TACK
    	XK_circle                      = 0x0bcf,    // U+25CB WHITE CIRCLE
    	XK_upstile                     = 0x0bd3,    // U+2308 LEFT CEILING
    	XK_downshoe                    = 0x0bd6,    // (U+222A UNION)
    	XK_rightshoe                   = 0x0bd8,    // (U+2283 SUPERSET OF)
    	XK_leftshoe                    = 0x0bda,    // (U+2282 SUBSET OF)
    	XK_lefttack                    = 0x0bdc,    // U+22A2 RIGHT TACK
    	XK_righttack                   = 0x0bfc,    // U+22A3 LEFT TACK
    	XK_hebrew_doublelowline        = 0x0cdf,    // U+2017 DOUBLE LOW LINE
    	XK_hebrew_aleph                = 0x0ce0,    // U+05D0 HEBREW LETTER ALEF
    	XK_hebrew_bet                  = 0x0ce1,    // U+05D1 HEBREW LETTER BET
    	XK_hebrew_beth                 = 0x0ce1,    // deprecated
    	XK_hebrew_gimel                = 0x0ce2,    // U+05D2 HEBREW LETTER GIMEL
    	XK_hebrew_gimmel               = 0x0ce2,    // deprecated
    	XK_hebrew_dalet                = 0x0ce3,    // U+05D3 HEBREW LETTER DALET
    	XK_hebrew_daleth               = 0x0ce3,    // deprecated
    	XK_hebrew_he                   = 0x0ce4,    // U+05D4 HEBREW LETTER HE
    	XK_hebrew_waw                  = 0x0ce5,    // U+05D5 HEBREW LETTER VAV
    	XK_hebrew_zain                 = 0x0ce6,    // U+05D6 HEBREW LETTER ZAYIN
    	XK_hebrew_zayin                = 0x0ce6,    // deprecated
    	XK_hebrew_chet                 = 0x0ce7,    // U+05D7 HEBREW LETTER HET
    	XK_hebrew_het                  = 0x0ce7,    // deprecated
    	XK_hebrew_tet                  = 0x0ce8,    // U+05D8 HEBREW LETTER TET
    	XK_hebrew_teth                 = 0x0ce8,    // deprecated
    	XK_hebrew_yod                  = 0x0ce9,    // U+05D9 HEBREW LETTER YOD
    	XK_hebrew_finalkaph            = 0x0cea,    // U+05DA HEBREW LETTER FINAL KAF
    	XK_hebrew_kaph                 = 0x0ceb,    // U+05DB HEBREW LETTER KAF
    	XK_hebrew_lamed                = 0x0cec,    // U+05DC HEBREW LETTER LAMED
    	XK_hebrew_finalmem             = 0x0ced,    // U+05DD HEBREW LETTER FINAL MEM
    	XK_hebrew_mem                  = 0x0cee,    // U+05DE HEBREW LETTER MEM
    	XK_hebrew_finalnun             = 0x0cef,    // U+05DF HEBREW LETTER FINAL NUN
    	XK_hebrew_nun                  = 0x0cf0,    // U+05E0 HEBREW LETTER NUN
    	XK_hebrew_samech               = 0x0cf1,    // U+05E1 HEBREW LETTER SAMEKH
    	XK_hebrew_samekh               = 0x0cf1,    // deprecated
    	XK_hebrew_ayin                 = 0x0cf2,    // U+05E2 HEBREW LETTER AYIN
    	XK_hebrew_finalpe              = 0x0cf3,    // U+05E3 HEBREW LETTER FINAL PE
    	XK_hebrew_pe                   = 0x0cf4,    // U+05E4 HEBREW LETTER PE
    	XK_hebrew_finalzade            = 0x0cf5,    // U+05E5 HEBREW LETTER FINAL TSADI
    	XK_hebrew_finalzadi            = 0x0cf5,    // deprecated
    	XK_hebrew_zade                 = 0x0cf6,    // U+05E6 HEBREW LETTER TSADI
    	XK_hebrew_zadi                 = 0x0cf6,    // deprecated
    	XK_hebrew_qoph                 = 0x0cf7,    // U+05E7 HEBREW LETTER QOF
    	XK_hebrew_kuf                  = 0x0cf7,    // deprecated
    	XK_hebrew_resh                 = 0x0cf8,    // U+05E8 HEBREW LETTER RESH
    	XK_hebrew_shin                 = 0x0cf9,    // U+05E9 HEBREW LETTER SHIN
    	XK_hebrew_taw                  = 0x0cfa,    // U+05EA HEBREW LETTER TAV
    	XK_hebrew_taf                  = 0x0cfa,    // deprecated
    	XK_Hebrew_switch               = 0xff7e,    // Alias for mode_switch
    	XK_Thai_kokai                  = 0x0da1,    // U+0E01 THAI CHARACTER KO KAI
    	XK_Thai_khokhai                = 0x0da2,    // U+0E02 THAI CHARACTER KHO KHAI
    	XK_Thai_khokhuat               = 0x0da3,    // U+0E03 THAI CHARACTER KHO KHUAT
    	XK_Thai_khokhwai               = 0x0da4,    // U+0E04 THAI CHARACTER KHO KHWAI
    	XK_Thai_khokhon                = 0x0da5,    // U+0E05 THAI CHARACTER KHO KHON
    	XK_Thai_khorakhang             = 0x0da6,    // U+0E06 THAI CHARACTER KHO RAKHANG
    	XK_Thai_ngongu                 = 0x0da7,    // U+0E07 THAI CHARACTER NGO NGU
    	XK_Thai_chochan                = 0x0da8,    // U+0E08 THAI CHARACTER CHO CHAN
    	XK_Thai_choching               = 0x0da9,    // U+0E09 THAI CHARACTER CHO CHING
    	XK_Thai_chochang               = 0x0daa,    // U+0E0A THAI CHARACTER CHO CHANG
    	XK_Thai_soso                   = 0x0dab,    // U+0E0B THAI CHARACTER SO SO
    	XK_Thai_chochoe                = 0x0dac,    // U+0E0C THAI CHARACTER CHO CHOE
    	XK_Thai_yoying                 = 0x0dad,    // U+0E0D THAI CHARACTER YO YING
    	XK_Thai_dochada                = 0x0dae,    // U+0E0E THAI CHARACTER DO CHADA
    	XK_Thai_topatak                = 0x0daf,    // U+0E0F THAI CHARACTER TO PATAK
    	XK_Thai_thothan                = 0x0db0,    // U+0E10 THAI CHARACTER THO THAN
    	XK_Thai_thonangmontho          = 0x0db1,    // U+0E11 THAI CHARACTER THO NANGMONTHO
    	XK_Thai_thophuthao             = 0x0db2,    // U+0E12 THAI CHARACTER THO PHUTHAO
    	XK_Thai_nonen                  = 0x0db3,    // U+0E13 THAI CHARACTER NO NEN
    	XK_Thai_dodek                  = 0x0db4,    // U+0E14 THAI CHARACTER DO DEK
    	XK_Thai_totao                  = 0x0db5,    // U+0E15 THAI CHARACTER TO TAO
    	XK_Thai_thothung               = 0x0db6,    // U+0E16 THAI CHARACTER THO THUNG
    	XK_Thai_thothahan              = 0x0db7,    // U+0E17 THAI CHARACTER THO THAHAN
    	XK_Thai_thothong               = 0x0db8,    // U+0E18 THAI CHARACTER THO THONG
    	XK_Thai_nonu                   = 0x0db9,    // U+0E19 THAI CHARACTER NO NU
    	XK_Thai_bobaimai               = 0x0dba,    // U+0E1A THAI CHARACTER BO BAIMAI
    	XK_Thai_popla                  = 0x0dbb,    // U+0E1B THAI CHARACTER PO PLA
    	XK_Thai_phophung               = 0x0dbc,    // U+0E1C THAI CHARACTER PHO PHUNG
    	XK_Thai_fofa                   = 0x0dbd,    // U+0E1D THAI CHARACTER FO FA
    	XK_Thai_phophan                = 0x0dbe,    // U+0E1E THAI CHARACTER PHO PHAN
    	XK_Thai_fofan                  = 0x0dbf,    // U+0E1F THAI CHARACTER FO FAN
    	XK_Thai_phosamphao             = 0x0dc0,    // U+0E20 THAI CHARACTER PHO SAMPHAO
    	XK_Thai_moma                   = 0x0dc1,    // U+0E21 THAI CHARACTER MO MA
    	XK_Thai_yoyak                  = 0x0dc2,    // U+0E22 THAI CHARACTER YO YAK
    	XK_Thai_rorua                  = 0x0dc3,    // U+0E23 THAI CHARACTER RO RUA
    	XK_Thai_ru                     = 0x0dc4,    // U+0E24 THAI CHARACTER RU
    	XK_Thai_loling                 = 0x0dc5,    // U+0E25 THAI CHARACTER LO LING
    	XK_Thai_lu                     = 0x0dc6,    // U+0E26 THAI CHARACTER LU
    	XK_Thai_wowaen                 = 0x0dc7,    // U+0E27 THAI CHARACTER WO WAEN
    	XK_Thai_sosala                 = 0x0dc8,    // U+0E28 THAI CHARACTER SO SALA
    	XK_Thai_sorusi                 = 0x0dc9,    // U+0E29 THAI CHARACTER SO RUSI
    	XK_Thai_sosua                  = 0x0dca,    // U+0E2A THAI CHARACTER SO SUA
    	XK_Thai_hohip                  = 0x0dcb,    // U+0E2B THAI CHARACTER HO HIP
    	XK_Thai_lochula                = 0x0dcc,    // U+0E2C THAI CHARACTER LO CHULA
    	XK_Thai_oang                   = 0x0dcd,    // U+0E2D THAI CHARACTER O ANG
    	XK_Thai_honokhuk               = 0x0dce,    // U+0E2E THAI CHARACTER HO NOKHUK
    	XK_Thai_paiyannoi              = 0x0dcf,    // U+0E2F THAI CHARACTER PAIYANNOI
    	XK_Thai_saraa                  = 0x0dd0,    // U+0E30 THAI CHARACTER SARA A
    	XK_Thai_maihanakat             = 0x0dd1,    // U+0E31 THAI CHARACTER MAI HAN-AKAT
    	XK_Thai_saraaa                 = 0x0dd2,    // U+0E32 THAI CHARACTER SARA AA
    	XK_Thai_saraam                 = 0x0dd3,    // U+0E33 THAI CHARACTER SARA AM
    	XK_Thai_sarai                  = 0x0dd4,    // U+0E34 THAI CHARACTER SARA I
    	XK_Thai_saraii                 = 0x0dd5,    // U+0E35 THAI CHARACTER SARA II
    	XK_Thai_saraue                 = 0x0dd6,    // U+0E36 THAI CHARACTER SARA UE
    	XK_Thai_sarauee                = 0x0dd7,    // U+0E37 THAI CHARACTER SARA UEE
    	XK_Thai_sarau                  = 0x0dd8,    // U+0E38 THAI CHARACTER SARA U
    	XK_Thai_sarauu                 = 0x0dd9,    // U+0E39 THAI CHARACTER SARA UU
    	XK_Thai_phinthu                = 0x0dda,    // U+0E3A THAI CHARACTER PHINTHU
    	XK_Thai_maihanakat_maitho      = 0x0dde, 
    	XK_Thai_baht                   = 0x0ddf,    // U+0E3F THAI CURRENCY SYMBOL BAHT
    	XK_Thai_sarae                  = 0x0de0,    // U+0E40 THAI CHARACTER SARA E
    	XK_Thai_saraae                 = 0x0de1,    // U+0E41 THAI CHARACTER SARA AE
    	XK_Thai_sarao                  = 0x0de2,    // U+0E42 THAI CHARACTER SARA O
    	XK_Thai_saraaimaimuan          = 0x0de3,    // U+0E43 THAI CHARACTER SARA AI MAIMUAN
    	XK_Thai_saraaimaimalai         = 0x0de4,    // U+0E44 THAI CHARACTER SARA AI MAIMALAI
    	XK_Thai_lakkhangyao            = 0x0de5,    // U+0E45 THAI CHARACTER LAKKHANGYAO
    	XK_Thai_maiyamok               = 0x0de6,    // U+0E46 THAI CHARACTER MAIYAMOK
    	XK_Thai_maitaikhu              = 0x0de7,    // U+0E47 THAI CHARACTER MAITAIKHU
    	XK_Thai_maiek                  = 0x0de8,    // U+0E48 THAI CHARACTER MAI EK
    	XK_Thai_maitho                 = 0x0de9,    // U+0E49 THAI CHARACTER MAI THO
    	XK_Thai_maitri                 = 0x0dea,    // U+0E4A THAI CHARACTER MAI TRI
    	XK_Thai_maichattawa            = 0x0deb,    // U+0E4B THAI CHARACTER MAI CHATTAWA
    	XK_Thai_thanthakhat            = 0x0dec,    // U+0E4C THAI CHARACTER THANTHAKHAT
    	XK_Thai_nikhahit               = 0x0ded,    // U+0E4D THAI CHARACTER NIKHAHIT
    	XK_Thai_leksun                 = 0x0df0,    // U+0E50 THAI DIGIT ZERO
    	XK_Thai_leknung                = 0x0df1,    // U+0E51 THAI DIGIT ONE
    	XK_Thai_leksong                = 0x0df2,    // U+0E52 THAI DIGIT TWO
    	XK_Thai_leksam                 = 0x0df3,    // U+0E53 THAI DIGIT THREE
    	XK_Thai_leksi                  = 0x0df4,    // U+0E54 THAI DIGIT FOUR
    	XK_Thai_lekha                  = 0x0df5,    // U+0E55 THAI DIGIT FIVE
    	XK_Thai_lekhok                 = 0x0df6,    // U+0E56 THAI DIGIT SIX
    	XK_Thai_lekchet                = 0x0df7,    // U+0E57 THAI DIGIT SEVEN
    	XK_Thai_lekpaet                = 0x0df8,    // U+0E58 THAI DIGIT EIGHT
    	XK_Thai_lekkao                 = 0x0df9,    // U+0E59 THAI DIGIT NINE
    	XK_Hangul                      = 0xff31,    // Hangul start/stop(toggle)
    	XK_Hangul_Start                = 0xff32,    // Hangul start
    	XK_Hangul_End                  = 0xff33,    // Hangul end, English start
    	XK_Hangul_Hanja                = 0xff34,    // Start Hangul->Hanja Conversion
    	XK_Hangul_Jamo                 = 0xff35,    // Hangul Jamo mode
    	XK_Hangul_Romaja               = 0xff36,    // Hangul Romaja mode
    	XK_Hangul_Codeinput            = 0xff37,    // Hangul code input mode
    	XK_Hangul_Jeonja               = 0xff38,    // Jeonja mode
    	XK_Hangul_Banja                = 0xff39,    // Banja mode
    	XK_Hangul_PreHanja             = 0xff3a,    // Pre Hanja conversion
    	XK_Hangul_PostHanja            = 0xff3b,    // Post Hanja conversion
    	XK_Hangul_SingleCandidate      = 0xff3c,    // Single candidate
    	XK_Hangul_MultipleCandidate    = 0xff3d,    // Multiple candidate
    	XK_Hangul_PreviousCandidate    = 0xff3e,    // Previous candidate
    	XK_Hangul_Special              = 0xff3f,    // Special symbols
    	XK_Hangul_switch               = 0xff7e,    // Alias for mode_switch
    	XK_Hangul_Kiyeog               = 0x0ea1, 
    	XK_Hangul_SsangKiyeog          = 0x0ea2, 
    	XK_Hangul_KiyeogSios           = 0x0ea3, 
    	XK_Hangul_Nieun                = 0x0ea4, 
    	XK_Hangul_NieunJieuj           = 0x0ea5, 
    	XK_Hangul_NieunHieuh           = 0x0ea6, 
    	XK_Hangul_Dikeud               = 0x0ea7, 
    	XK_Hangul_SsangDikeud          = 0x0ea8, 
    	XK_Hangul_Rieul                = 0x0ea9, 
    	XK_Hangul_RieulKiyeog          = 0x0eaa, 
    	XK_Hangul_RieulMieum           = 0x0eab, 
    	XK_Hangul_RieulPieub           = 0x0eac, 
    	XK_Hangul_RieulSios            = 0x0ead, 
    	XK_Hangul_RieulTieut           = 0x0eae, 
    	XK_Hangul_RieulPhieuf          = 0x0eaf, 
    	XK_Hangul_RieulHieuh           = 0x0eb0, 
    	XK_Hangul_Mieum                = 0x0eb1, 
    	XK_Hangul_Pieub                = 0x0eb2, 
    	XK_Hangul_SsangPieub           = 0x0eb3, 
    	XK_Hangul_PieubSios            = 0x0eb4, 
    	XK_Hangul_Sios                 = 0x0eb5, 
    	XK_Hangul_SsangSios            = 0x0eb6, 
    	XK_Hangul_Ieung                = 0x0eb7, 
    	XK_Hangul_Jieuj                = 0x0eb8, 
    	XK_Hangul_SsangJieuj           = 0x0eb9, 
    	XK_Hangul_Cieuc                = 0x0eba, 
    	XK_Hangul_Khieuq               = 0x0ebb, 
    	XK_Hangul_Tieut                = 0x0ebc, 
    	XK_Hangul_Phieuf               = 0x0ebd, 
    	XK_Hangul_Hieuh                = 0x0ebe, 
    	XK_Hangul_A                    = 0x0ebf, 
    	XK_Hangul_AE                   = 0x0ec0, 
    	XK_Hangul_YA                   = 0x0ec1, 
    	XK_Hangul_YAE                  = 0x0ec2, 
    	XK_Hangul_EO                   = 0x0ec3, 
    	XK_Hangul_E                    = 0x0ec4, 
    	XK_Hangul_YEO                  = 0x0ec5, 
    	XK_Hangul_YE                   = 0x0ec6, 
    	XK_Hangul_O                    = 0x0ec7, 
    	XK_Hangul_WA                   = 0x0ec8, 
    	XK_Hangul_WAE                  = 0x0ec9, 
    	XK_Hangul_OE                   = 0x0eca, 
    	XK_Hangul_YO                   = 0x0ecb, 
    	XK_Hangul_U                    = 0x0ecc, 
    	XK_Hangul_WEO                  = 0x0ecd, 
    	XK_Hangul_WE                   = 0x0ece, 
    	XK_Hangul_WI                   = 0x0ecf, 
    	XK_Hangul_YU                   = 0x0ed0, 
    	XK_Hangul_EU                   = 0x0ed1, 
    	XK_Hangul_YI                   = 0x0ed2, 
    	XK_Hangul_I                    = 0x0ed3, 
    	XK_Hangul_J_Kiyeog             = 0x0ed4, 
    	XK_Hangul_J_SsangKiyeog        = 0x0ed5, 
    	XK_Hangul_J_KiyeogSios         = 0x0ed6, 
    	XK_Hangul_J_Nieun              = 0x0ed7, 
    	XK_Hangul_J_NieunJieuj         = 0x0ed8, 
    	XK_Hangul_J_NieunHieuh         = 0x0ed9, 
    	XK_Hangul_J_Dikeud             = 0x0eda, 
    	XK_Hangul_J_Rieul              = 0x0edb, 
    	XK_Hangul_J_RieulKiyeog        = 0x0edc, 
    	XK_Hangul_J_RieulMieum         = 0x0edd, 
    	XK_Hangul_J_RieulPieub         = 0x0ede, 
    	XK_Hangul_J_RieulSios          = 0x0edf, 
    	XK_Hangul_J_RieulTieut         = 0x0ee0, 
    	XK_Hangul_J_RieulPhieuf        = 0x0ee1, 
    	XK_Hangul_J_RieulHieuh         = 0x0ee2, 
    	XK_Hangul_J_Mieum              = 0x0ee3, 
    	XK_Hangul_J_Pieub              = 0x0ee4, 
    	XK_Hangul_J_PieubSios          = 0x0ee5, 
    	XK_Hangul_J_Sios               = 0x0ee6, 
    	XK_Hangul_J_SsangSios          = 0x0ee7, 
    	XK_Hangul_J_Ieung              = 0x0ee8, 
    	XK_Hangul_J_Jieuj              = 0x0ee9, 
    	XK_Hangul_J_Cieuc              = 0x0eea, 
    	XK_Hangul_J_Khieuq             = 0x0eeb, 
    	XK_Hangul_J_Tieut              = 0x0eec, 
    	XK_Hangul_J_Phieuf             = 0x0eed, 
    	XK_Hangul_J_Hieuh              = 0x0eee, 
    	XK_Hangul_RieulYeorinHieuh     = 0x0eef, 
    	XK_Hangul_SunkyeongeumMieum    = 0x0ef0, 
    	XK_Hangul_SunkyeongeumPieub    = 0x0ef1, 
    	XK_Hangul_PanSios              = 0x0ef2, 
    	XK_Hangul_KkogjiDalrinIeung    = 0x0ef3, 
    	XK_Hangul_SunkyeongeumPhieuf   = 0x0ef4, 
    	XK_Hangul_YeorinHieuh          = 0x0ef5, 
    	XK_Hangul_AraeA                = 0x0ef6, 
    	XK_Hangul_AraeAE               = 0x0ef7, 
    	XK_Hangul_J_PanSios            = 0x0ef8, 
    	XK_Hangul_J_KkogjiDalrinIeung  = 0x0ef9, 
    	XK_Hangul_J_YeorinHieuh        = 0x0efa, 
    	XK_Korean_Won                  = 0x0eff,    // (U+20A9 WON SIGN)
    	XK_Armenian_ligature_ew        = 0x1000587, // U+0587 ARMENIAN SMALL LIGATURE ECH YIWN
    	XK_Armenian_full_stop          = 0x1000589, // U+0589 ARMENIAN FULL STOP
    	XK_Armenian_verjaket           = 0x1000589, // U+0589 ARMENIAN FULL STOP
    	XK_Armenian_separation_mark    = 0x100055d, // U+055D ARMENIAN COMMA
    	XK_Armenian_but                = 0x100055d, // U+055D ARMENIAN COMMA
    	XK_Armenian_hyphen             = 0x100058a, // U+058A ARMENIAN HYPHEN
    	XK_Armenian_yentamna           = 0x100058a, // U+058A ARMENIAN HYPHEN
    	XK_Armenian_exclam             = 0x100055c, // U+055C ARMENIAN EXCLAMATION MARK
    	XK_Armenian_amanak             = 0x100055c, // U+055C ARMENIAN EXCLAMATION MARK
    	XK_Armenian_accent             = 0x100055b, // U+055B ARMENIAN EMPHASIS MARK
    	XK_Armenian_shesht             = 0x100055b, // U+055B ARMENIAN EMPHASIS MARK
    	XK_Armenian_question           = 0x100055e, // U+055E ARMENIAN QUESTION MARK
    	XK_Armenian_paruyk             = 0x100055e, // U+055E ARMENIAN QUESTION MARK
    	XK_Armenian_AYB                = 0x1000531, // U+0531 ARMENIAN CAPITAL LETTER AYB
    	XK_Armenian_ayb                = 0x1000561, // U+0561 ARMENIAN SMALL LETTER AYB
    	XK_Armenian_BEN                = 0x1000532, // U+0532 ARMENIAN CAPITAL LETTER BEN
    	XK_Armenian_ben                = 0x1000562, // U+0562 ARMENIAN SMALL LETTER BEN
    	XK_Armenian_GIM                = 0x1000533, // U+0533 ARMENIAN CAPITAL LETTER GIM
    	XK_Armenian_gim                = 0x1000563, // U+0563 ARMENIAN SMALL LETTER GIM
    	XK_Armenian_DA                 = 0x1000534, // U+0534 ARMENIAN CAPITAL LETTER DA
    	XK_Armenian_da                 = 0x1000564, // U+0564 ARMENIAN SMALL LETTER DA
    	XK_Armenian_YECH               = 0x1000535, // U+0535 ARMENIAN CAPITAL LETTER ECH
    	XK_Armenian_yech               = 0x1000565, // U+0565 ARMENIAN SMALL LETTER ECH
    	XK_Armenian_ZA                 = 0x1000536, // U+0536 ARMENIAN CAPITAL LETTER ZA
    	XK_Armenian_za                 = 0x1000566, // U+0566 ARMENIAN SMALL LETTER ZA
    	XK_Armenian_E                  = 0x1000537, // U+0537 ARMENIAN CAPITAL LETTER EH
    	XK_Armenian_e                  = 0x1000567, // U+0567 ARMENIAN SMALL LETTER EH
    	XK_Armenian_AT                 = 0x1000538, // U+0538 ARMENIAN CAPITAL LETTER ET
    	XK_Armenian_at                 = 0x1000568, // U+0568 ARMENIAN SMALL LETTER ET
    	XK_Armenian_TO                 = 0x1000539, // U+0539 ARMENIAN CAPITAL LETTER TO
    	XK_Armenian_to                 = 0x1000569, // U+0569 ARMENIAN SMALL LETTER TO
    	XK_Armenian_ZHE                = 0x100053a, // U+053A ARMENIAN CAPITAL LETTER ZHE
    	XK_Armenian_zhe                = 0x100056a, // U+056A ARMENIAN SMALL LETTER ZHE
    	XK_Armenian_INI                = 0x100053b, // U+053B ARMENIAN CAPITAL LETTER INI
    	XK_Armenian_ini                = 0x100056b, // U+056B ARMENIAN SMALL LETTER INI
    	XK_Armenian_LYUN               = 0x100053c, // U+053C ARMENIAN CAPITAL LETTER LIWN
    	XK_Armenian_lyun               = 0x100056c, // U+056C ARMENIAN SMALL LETTER LIWN
    	XK_Armenian_KHE                = 0x100053d, // U+053D ARMENIAN CAPITAL LETTER XEH
    	XK_Armenian_khe                = 0x100056d, // U+056D ARMENIAN SMALL LETTER XEH
    	XK_Armenian_TSA                = 0x100053e, // U+053E ARMENIAN CAPITAL LETTER CA
    	XK_Armenian_tsa                = 0x100056e, // U+056E ARMENIAN SMALL LETTER CA
    	XK_Armenian_KEN                = 0x100053f, // U+053F ARMENIAN CAPITAL LETTER KEN
    	XK_Armenian_ken                = 0x100056f, // U+056F ARMENIAN SMALL LETTER KEN
    	XK_Armenian_HO                 = 0x1000540, // U+0540 ARMENIAN CAPITAL LETTER HO
    	XK_Armenian_ho                 = 0x1000570, // U+0570 ARMENIAN SMALL LETTER HO
    	XK_Armenian_DZA                = 0x1000541, // U+0541 ARMENIAN CAPITAL LETTER JA
    	XK_Armenian_dza                = 0x1000571, // U+0571 ARMENIAN SMALL LETTER JA
    	XK_Armenian_GHAT               = 0x1000542, // U+0542 ARMENIAN CAPITAL LETTER GHAD
    	XK_Armenian_ghat               = 0x1000572, // U+0572 ARMENIAN SMALL LETTER GHAD
    	XK_Armenian_TCHE               = 0x1000543, // U+0543 ARMENIAN CAPITAL LETTER CHEH
    	XK_Armenian_tche               = 0x1000573, // U+0573 ARMENIAN SMALL LETTER CHEH
    	XK_Armenian_MEN                = 0x1000544, // U+0544 ARMENIAN CAPITAL LETTER MEN
    	XK_Armenian_men                = 0x1000574, // U+0574 ARMENIAN SMALL LETTER MEN
    	XK_Armenian_HI                 = 0x1000545, // U+0545 ARMENIAN CAPITAL LETTER YI
    	XK_Armenian_hi                 = 0x1000575, // U+0575 ARMENIAN SMALL LETTER YI
    	XK_Armenian_NU                 = 0x1000546, // U+0546 ARMENIAN CAPITAL LETTER NOW
    	XK_Armenian_nu                 = 0x1000576, // U+0576 ARMENIAN SMALL LETTER NOW
    	XK_Armenian_SHA                = 0x1000547, // U+0547 ARMENIAN CAPITAL LETTER SHA
    	XK_Armenian_sha                = 0x1000577, // U+0577 ARMENIAN SMALL LETTER SHA
    	XK_Armenian_VO                 = 0x1000548, // U+0548 ARMENIAN CAPITAL LETTER VO
    	XK_Armenian_vo                 = 0x1000578, // U+0578 ARMENIAN SMALL LETTER VO
    	XK_Armenian_CHA                = 0x1000549, // U+0549 ARMENIAN CAPITAL LETTER CHA
    	XK_Armenian_cha                = 0x1000579, // U+0579 ARMENIAN SMALL LETTER CHA
    	XK_Armenian_PE                 = 0x100054a, // U+054A ARMENIAN CAPITAL LETTER PEH
    	XK_Armenian_pe                 = 0x100057a, // U+057A ARMENIAN SMALL LETTER PEH
    	XK_Armenian_JE                 = 0x100054b, // U+054B ARMENIAN CAPITAL LETTER JHEH
    	XK_Armenian_je                 = 0x100057b, // U+057B ARMENIAN SMALL LETTER JHEH
    	XK_Armenian_RA                 = 0x100054c, // U+054C ARMENIAN CAPITAL LETTER RA
    	XK_Armenian_ra                 = 0x100057c, // U+057C ARMENIAN SMALL LETTER RA
    	XK_Armenian_SE                 = 0x100054d, // U+054D ARMENIAN CAPITAL LETTER SEH
    	XK_Armenian_se                 = 0x100057d, // U+057D ARMENIAN SMALL LETTER SEH
    	XK_Armenian_VEV                = 0x100054e, // U+054E ARMENIAN CAPITAL LETTER VEW
    	XK_Armenian_vev                = 0x100057e, // U+057E ARMENIAN SMALL LETTER VEW
    	XK_Armenian_TYUN               = 0x100054f, // U+054F ARMENIAN CAPITAL LETTER TIWN
    	XK_Armenian_tyun               = 0x100057f, // U+057F ARMENIAN SMALL LETTER TIWN
    	XK_Armenian_RE                 = 0x1000550, // U+0550 ARMENIAN CAPITAL LETTER REH
    	XK_Armenian_re                 = 0x1000580, // U+0580 ARMENIAN SMALL LETTER REH
    	XK_Armenian_TSO                = 0x1000551, // U+0551 ARMENIAN CAPITAL LETTER CO
    	XK_Armenian_tso                = 0x1000581, // U+0581 ARMENIAN SMALL LETTER CO
    	XK_Armenian_VYUN               = 0x1000552, // U+0552 ARMENIAN CAPITAL LETTER YIWN
    	XK_Armenian_vyun               = 0x1000582, // U+0582 ARMENIAN SMALL LETTER YIWN
    	XK_Armenian_PYUR               = 0x1000553, // U+0553 ARMENIAN CAPITAL LETTER PIWR
    	XK_Armenian_pyur               = 0x1000583, // U+0583 ARMENIAN SMALL LETTER PIWR
    	XK_Armenian_KE                 = 0x1000554, // U+0554 ARMENIAN CAPITAL LETTER KEH
    	XK_Armenian_ke                 = 0x1000584, // U+0584 ARMENIAN SMALL LETTER KEH
    	XK_Armenian_O                  = 0x1000555, // U+0555 ARMENIAN CAPITAL LETTER OH
    	XK_Armenian_o                  = 0x1000585, // U+0585 ARMENIAN SMALL LETTER OH
    	XK_Armenian_FE                 = 0x1000556, // U+0556 ARMENIAN CAPITAL LETTER FEH
    	XK_Armenian_fe                 = 0x1000586, // U+0586 ARMENIAN SMALL LETTER FEH
    	XK_Armenian_apostrophe         = 0x100055a, // U+055A ARMENIAN APOSTROPHE
    	XK_Georgian_an                 = 0x10010d0, // U+10D0 GEORGIAN LETTER AN
    	XK_Georgian_ban                = 0x10010d1, // U+10D1 GEORGIAN LETTER BAN
    	XK_Georgian_gan                = 0x10010d2, // U+10D2 GEORGIAN LETTER GAN
    	XK_Georgian_don                = 0x10010d3, // U+10D3 GEORGIAN LETTER DON
    	XK_Georgian_en                 = 0x10010d4, // U+10D4 GEORGIAN LETTER EN
    	XK_Georgian_vin                = 0x10010d5, // U+10D5 GEORGIAN LETTER VIN
    	XK_Georgian_zen                = 0x10010d6, // U+10D6 GEORGIAN LETTER ZEN
    	XK_Georgian_tan                = 0x10010d7, // U+10D7 GEORGIAN LETTER TAN
    	XK_Georgian_in                 = 0x10010d8, // U+10D8 GEORGIAN LETTER IN
    	XK_Georgian_kan                = 0x10010d9, // U+10D9 GEORGIAN LETTER KAN
    	XK_Georgian_las                = 0x10010da, // U+10DA GEORGIAN LETTER LAS
    	XK_Georgian_man                = 0x10010db, // U+10DB GEORGIAN LETTER MAN
    	XK_Georgian_nar                = 0x10010dc, // U+10DC GEORGIAN LETTER NAR
    	XK_Georgian_on                 = 0x10010dd, // U+10DD GEORGIAN LETTER ON
    	XK_Georgian_par                = 0x10010de, // U+10DE GEORGIAN LETTER PAR
    	XK_Georgian_zhar               = 0x10010df, // U+10DF GEORGIAN LETTER ZHAR
    	XK_Georgian_rae                = 0x10010e0, // U+10E0 GEORGIAN LETTER RAE
    	XK_Georgian_san                = 0x10010e1, // U+10E1 GEORGIAN LETTER SAN
    	XK_Georgian_tar                = 0x10010e2, // U+10E2 GEORGIAN LETTER TAR
    	XK_Georgian_un                 = 0x10010e3, // U+10E3 GEORGIAN LETTER UN
    	XK_Georgian_phar               = 0x10010e4, // U+10E4 GEORGIAN LETTER PHAR
    	XK_Georgian_khar               = 0x10010e5, // U+10E5 GEORGIAN LETTER KHAR
    	XK_Georgian_ghan               = 0x10010e6, // U+10E6 GEORGIAN LETTER GHAN
    	XK_Georgian_qar                = 0x10010e7, // U+10E7 GEORGIAN LETTER QAR
    	XK_Georgian_shin               = 0x10010e8, // U+10E8 GEORGIAN LETTER SHIN
    	XK_Georgian_chin               = 0x10010e9, // U+10E9 GEORGIAN LETTER CHIN
    	XK_Georgian_can                = 0x10010ea, // U+10EA GEORGIAN LETTER CAN
    	XK_Georgian_jil                = 0x10010eb, // U+10EB GEORGIAN LETTER JIL
    	XK_Georgian_cil                = 0x10010ec, // U+10EC GEORGIAN LETTER CIL
    	XK_Georgian_char               = 0x10010ed, // U+10ED GEORGIAN LETTER CHAR
    	XK_Georgian_xan                = 0x10010ee, // U+10EE GEORGIAN LETTER XAN
    	XK_Georgian_jhan               = 0x10010ef, // U+10EF GEORGIAN LETTER JHAN
    	XK_Georgian_hae                = 0x10010f0, // U+10F0 GEORGIAN LETTER HAE
    	XK_Georgian_he                 = 0x10010f1, // U+10F1 GEORGIAN LETTER HE
    	XK_Georgian_hie                = 0x10010f2, // U+10F2 GEORGIAN LETTER HIE
    	XK_Georgian_we                 = 0x10010f3, // U+10F3 GEORGIAN LETTER WE
    	XK_Georgian_har                = 0x10010f4, // U+10F4 GEORGIAN LETTER HAR
    	XK_Georgian_hoe                = 0x10010f5, // U+10F5 GEORGIAN LETTER HOE
    	XK_Georgian_fi                 = 0x10010f6, // U+10F6 GEORGIAN LETTER FI
    	XK_Xabovedot                   = 0x1001e8a, // U+1E8A LATIN CAPITAL LETTER X WITH DOT ABOVE
    	XK_Ibreve                      = 0x100012c, // U+012C LATIN CAPITAL LETTER I WITH BREVE
    	XK_Zstroke                     = 0x10001b5, // U+01B5 LATIN CAPITAL LETTER Z WITH STROKE
    	XK_Gcaron                      = 0x10001e6, // U+01E6 LATIN CAPITAL LETTER G WITH CARON
    	XK_Ocaron                      = 0x10001d1, // U+01D2 LATIN CAPITAL LETTER O WITH CARON
    	XK_Obarred                     = 0x100019f, // U+019F LATIN CAPITAL LETTER O WITH MIDDLE TILDE
    	XK_xabovedot                   = 0x1001e8b, // U+1E8B LATIN SMALL LETTER X WITH DOT ABOVE
    	XK_ibreve                      = 0x100012d, // U+012D LATIN SMALL LETTER I WITH BREVE
    	XK_zstroke                     = 0x10001b6, // U+01B6 LATIN SMALL LETTER Z WITH STROKE
    	XK_gcaron                      = 0x10001e7, // U+01E7 LATIN SMALL LETTER G WITH CARON
    	XK_ocaron                      = 0x10001d2, // U+01D2 LATIN SMALL LETTER O WITH CARON
    	XK_obarred                     = 0x1000275, // U+0275 LATIN SMALL LETTER BARRED O
    	XK_SCHWA                       = 0x100018f, // U+018F LATIN CAPITAL LETTER SCHWA
    	XK_schwa                       = 0x1000259, // U+0259 LATIN SMALL LETTER SCHWA
    	XK_Lbelowdot                   = 0x1001e36, // U+1E36 LATIN CAPITAL LETTER L WITH DOT BELOW
    	XK_lbelowdot                   = 0x1001e37, // U+1E37 LATIN SMALL LETTER L WITH DOT BELOW
    	XK_Abelowdot                   = 0x1001ea0, // U+1EA0 LATIN CAPITAL LETTER A WITH DOT BELOW
    	XK_abelowdot                   = 0x1001ea1, // U+1EA1 LATIN SMALL LETTER A WITH DOT BELOW
    	XK_Ahook                       = 0x1001ea2, // U+1EA2 LATIN CAPITAL LETTER A WITH HOOK ABOVE
    	XK_ahook                       = 0x1001ea3, // U+1EA3 LATIN SMALL LETTER A WITH HOOK ABOVE
    	XK_Acircumflexacute            = 0x1001ea4, // U+1EA4 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
    	XK_acircumflexacute            = 0x1001ea5, // U+1EA5 LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
    	XK_Acircumflexgrave            = 0x1001ea6, // U+1EA6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
    	XK_acircumflexgrave            = 0x1001ea7, // U+1EA7 LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
    	XK_Acircumflexhook             = 0x1001ea8, // U+1EA8 LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_acircumflexhook             = 0x1001ea9, // U+1EA9 LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_Acircumflextilde            = 0x1001eaa, // U+1EAA LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
    	XK_acircumflextilde            = 0x1001eab, // U+1EAB LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
    	XK_Acircumflexbelowdot         = 0x1001eac, // U+1EAC LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
    	XK_acircumflexbelowdot         = 0x1001ead, // U+1EAD LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
    	XK_Abreveacute                 = 0x1001eae, // U+1EAE LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
    	XK_abreveacute                 = 0x1001eaf, // U+1EAF LATIN SMALL LETTER A WITH BREVE AND ACUTE
    	XK_Abrevegrave                 = 0x1001eb0, // U+1EB0 LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
    	XK_abrevegrave                 = 0x1001eb1, // U+1EB1 LATIN SMALL LETTER A WITH BREVE AND GRAVE
    	XK_Abrevehook                  = 0x1001eb2, // U+1EB2 LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
    	XK_abrevehook                  = 0x1001eb3, // U+1EB3 LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
    	XK_Abrevetilde                 = 0x1001eb4, // U+1EB4 LATIN CAPITAL LETTER A WITH BREVE AND TILDE
    	XK_abrevetilde                 = 0x1001eb5, // U+1EB5 LATIN SMALL LETTER A WITH BREVE AND TILDE
    	XK_Abrevebelowdot              = 0x1001eb6, // U+1EB6 LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
    	XK_abrevebelowdot              = 0x1001eb7, // U+1EB7 LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
    	XK_Ebelowdot                   = 0x1001eb8, // U+1EB8 LATIN CAPITAL LETTER E WITH DOT BELOW
    	XK_ebelowdot                   = 0x1001eb9, // U+1EB9 LATIN SMALL LETTER E WITH DOT BELOW
    	XK_Ehook                       = 0x1001eba, // U+1EBA LATIN CAPITAL LETTER E WITH HOOK ABOVE
    	XK_ehook                       = 0x1001ebb, // U+1EBB LATIN SMALL LETTER E WITH HOOK ABOVE
    	XK_Etilde                      = 0x1001ebc, // U+1EBC LATIN CAPITAL LETTER E WITH TILDE
    	XK_etilde                      = 0x1001ebd, // U+1EBD LATIN SMALL LETTER E WITH TILDE
    	XK_Ecircumflexacute            = 0x1001ebe, // U+1EBE LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
    	XK_ecircumflexacute            = 0x1001ebf, // U+1EBF LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
    	XK_Ecircumflexgrave            = 0x1001ec0, // U+1EC0 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
    	XK_ecircumflexgrave            = 0x1001ec1, // U+1EC1 LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
    	XK_Ecircumflexhook             = 0x1001ec2, // U+1EC2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_ecircumflexhook             = 0x1001ec3, // U+1EC3 LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_Ecircumflextilde            = 0x1001ec4, // U+1EC4 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
    	XK_ecircumflextilde            = 0x1001ec5, // U+1EC5 LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
    	XK_Ecircumflexbelowdot         = 0x1001ec6, // U+1EC6 LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
    	XK_ecircumflexbelowdot         = 0x1001ec7, // U+1EC7 LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
    	XK_Ihook                       = 0x1001ec8, // U+1EC8 LATIN CAPITAL LETTER I WITH HOOK ABOVE
    	XK_ihook                       = 0x1001ec9, // U+1EC9 LATIN SMALL LETTER I WITH HOOK ABOVE
    	XK_Ibelowdot                   = 0x1001eca, // U+1ECA LATIN CAPITAL LETTER I WITH DOT BELOW
    	XK_ibelowdot                   = 0x1001ecb, // U+1ECB LATIN SMALL LETTER I WITH DOT BELOW
    	XK_Obelowdot                   = 0x1001ecc, // U+1ECC LATIN CAPITAL LETTER O WITH DOT BELOW
    	XK_obelowdot                   = 0x1001ecd, // U+1ECD LATIN SMALL LETTER O WITH DOT BELOW
    	XK_Ohook                       = 0x1001ece, // U+1ECE LATIN CAPITAL LETTER O WITH HOOK ABOVE
    	XK_ohook                       = 0x1001ecf, // U+1ECF LATIN SMALL LETTER O WITH HOOK ABOVE
    	XK_Ocircumflexacute            = 0x1001ed0, // U+1ED0 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
    	XK_ocircumflexacute            = 0x1001ed1, // U+1ED1 LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
    	XK_Ocircumflexgrave            = 0x1001ed2, // U+1ED2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
    	XK_ocircumflexgrave            = 0x1001ed3, // U+1ED3 LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
    	XK_Ocircumflexhook             = 0x1001ed4, // U+1ED4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_ocircumflexhook             = 0x1001ed5, // U+1ED5 LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
    	XK_Ocircumflextilde            = 0x1001ed6, // U+1ED6 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
    	XK_ocircumflextilde            = 0x1001ed7, // U+1ED7 LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
    	XK_Ocircumflexbelowdot         = 0x1001ed8, // U+1ED8 LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
    	XK_ocircumflexbelowdot         = 0x1001ed9, // U+1ED9 LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
    	XK_Ohornacute                  = 0x1001eda, // U+1EDA LATIN CAPITAL LETTER O WITH HORN AND ACUTE
    	XK_ohornacute                  = 0x1001edb, // U+1EDB LATIN SMALL LETTER O WITH HORN AND ACUTE
    	XK_Ohorngrave                  = 0x1001edc, // U+1EDC LATIN CAPITAL LETTER O WITH HORN AND GRAVE
    	XK_ohorngrave                  = 0x1001edd, // U+1EDD LATIN SMALL LETTER O WITH HORN AND GRAVE
    	XK_Ohornhook                   = 0x1001ede, // U+1EDE LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
    	XK_ohornhook                   = 0x1001edf, // U+1EDF LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
    	XK_Ohorntilde                  = 0x1001ee0, // U+1EE0 LATIN CAPITAL LETTER O WITH HORN AND TILDE
    	XK_ohorntilde                  = 0x1001ee1, // U+1EE1 LATIN SMALL LETTER O WITH HORN AND TILDE
    	XK_Ohornbelowdot               = 0x1001ee2, // U+1EE2 LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
    	XK_ohornbelowdot               = 0x1001ee3, // U+1EE3 LATIN SMALL LETTER O WITH HORN AND DOT BELOW
    	XK_Ubelowdot                   = 0x1001ee4, // U+1EE4 LATIN CAPITAL LETTER U WITH DOT BELOW
    	XK_ubelowdot                   = 0x1001ee5, // U+1EE5 LATIN SMALL LETTER U WITH DOT BELOW
    	XK_Uhook                       = 0x1001ee6, // U+1EE6 LATIN CAPITAL LETTER U WITH HOOK ABOVE
    	XK_uhook                       = 0x1001ee7, // U+1EE7 LATIN SMALL LETTER U WITH HOOK ABOVE
    	XK_Uhornacute                  = 0x1001ee8, // U+1EE8 LATIN CAPITAL LETTER U WITH HORN AND ACUTE
    	XK_uhornacute                  = 0x1001ee9, // U+1EE9 LATIN SMALL LETTER U WITH HORN AND ACUTE
    	XK_Uhorngrave                  = 0x1001eea, // U+1EEA LATIN CAPITAL LETTER U WITH HORN AND GRAVE
    	XK_uhorngrave                  = 0x1001eeb, // U+1EEB LATIN SMALL LETTER U WITH HORN AND GRAVE
    	XK_Uhornhook                   = 0x1001eec, // U+1EEC LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
    	XK_uhornhook                   = 0x1001eed, // U+1EED LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
    	XK_Uhorntilde                  = 0x1001eee, // U+1EEE LATIN CAPITAL LETTER U WITH HORN AND TILDE
    	XK_uhorntilde                  = 0x1001eef, // U+1EEF LATIN SMALL LETTER U WITH HORN AND TILDE
    	XK_Uhornbelowdot               = 0x1001ef0, // U+1EF0 LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
    	XK_uhornbelowdot               = 0x1001ef1, // U+1EF1 LATIN SMALL LETTER U WITH HORN AND DOT BELOW
    	XK_Ybelowdot                   = 0x1001ef4, // U+1EF4 LATIN CAPITAL LETTER Y WITH DOT BELOW
    	XK_ybelowdot                   = 0x1001ef5, // U+1EF5 LATIN SMALL LETTER Y WITH DOT BELOW
    	XK_Yhook                       = 0x1001ef6, // U+1EF6 LATIN CAPITAL LETTER Y WITH HOOK ABOVE
    	XK_yhook                       = 0x1001ef7, // U+1EF7 LATIN SMALL LETTER Y WITH HOOK ABOVE
    	XK_Ytilde                      = 0x1001ef8, // U+1EF8 LATIN CAPITAL LETTER Y WITH TILDE
    	XK_ytilde                      = 0x1001ef9, // U+1EF9 LATIN SMALL LETTER Y WITH TILDE
    	XK_Ohorn                       = 0x10001a0, // U+01A0 LATIN CAPITAL LETTER O WITH HORN
    	XK_ohorn                       = 0x10001a1, // U+01A1 LATIN SMALL LETTER O WITH HORN
    	XK_Uhorn                       = 0x10001af, // U+01AF LATIN CAPITAL LETTER U WITH HORN
    	XK_uhorn                       = 0x10001b0, // U+01B0 LATIN SMALL LETTER U WITH HORN
    	XK_EcuSign                     = 0x10020a0, // U+20A0 EURO-CURRENCY SIGN
    	XK_ColonSign                   = 0x10020a1, // U+20A1 COLON SIGN
    	XK_CruzeiroSign                = 0x10020a2, // U+20A2 CRUZEIRO SIGN
    	XK_FFrancSign                  = 0x10020a3, // U+20A3 FRENCH FRANC SIGN
    	XK_LiraSign                    = 0x10020a4, // U+20A4 LIRA SIGN
    	XK_MillSign                    = 0x10020a5, // U+20A5 MILL SIGN
    	XK_NairaSign                   = 0x10020a6, // U+20A6 NAIRA SIGN
    	XK_PesetaSign                  = 0x10020a7, // U+20A7 PESETA SIGN
    	XK_RupeeSign                   = 0x10020a8, // U+20A8 RUPEE SIGN
    	XK_WonSign                     = 0x10020a9, // U+20A9 WON SIGN
    	XK_NewSheqelSign               = 0x10020aa, // U+20AA NEW SHEQEL SIGN
    	XK_DongSign                    = 0x10020ab, // U+20AB DONG SIGN
    	XK_EuroSign                    = 0x20ac,    // U+20AC EURO SIGN
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    KeyboardAutoRepeatMode ¶

    KeyboardAutoRepeatMode :: enum i32 {
    	AutoRepeatModeOff     = 0, 
    	AutoRepeatModeOn      = 1, 
    	AutoRepeatModeDefault = 2, 
    }

    KeyboardControlMask ¶

    KeyboardControlMask :: bit_set[KeyboardControlMaskBits; int]
    Related Procedures With Parameters

    KeyboardControlMaskBits ¶

    KeyboardControlMaskBits :: enum int {
    	KBKeyClickPercent = 0, 
    	KBBellPercent     = 1, 
    	KBBellPitch       = 2, 
    	KBBellDuration    = 3, 
    	KBLed             = 4, 
    	KBLedMode         = 5, 
    	KBKey             = 6, 
    	KBAutoRepeatMode  = 7, 
    }

    KeyboardLedMode ¶

    KeyboardLedMode :: enum i32 {
    	LedModeOff = 0, 
    	LedModeOn  = 1, 
    }

    LineStyle ¶

    LineStyle :: enum i32 {
    	LineSolid      = 0, 
    	LineOnOffDash  = 1, 
    	LineDoubleDash = 2, 
    }
    Related Procedures With Parameters

    LookupStringStatus ¶

    LookupStringStatus :: enum i32 {
    	BufferOverflow = -1, 
    	LookupNone     = 1, 
    	LookupChars    = 2, 
    	LookupKeySym   = 3, 
    	LookupBoth     = 4, 
    }
    Related Procedures With Parameters

    MappingRequest ¶

    MappingRequest :: enum i32 {
    	MappingModifier = 0, 
    	MappingKeyboard = 1, 
    	MappingPointer  = 2, 
    }

    Mask ¶

    Mask :: distinct uint

    MouseButton ¶

    MouseButton :: enum i32 {
    	Button1 = 1, 
    	Button2 = 2, 
    	Button3 = 3, 
    	Button4 = 4, 
    	Button5 = 5, 
    }

    NotifyDetail ¶

    NotifyDetail :: enum i32 {
    	NotifyAncestor         = 0, 
    	NotifyVirtual          = 1, 
    	NotifyInferior         = 2, 
    	NotifyNonlinear        = 3, 
    	NotifyNonlinearVirtual = 4, 
    	NotifyPointer          = 5, 
    	NotifyPointerRoot      = 6, 
    	NotifyDetailNone       = 7, 
    }

    NotifyMode ¶

    NotifyMode :: enum i32 {
    	NotifyNormal       = 0, 
    	NotifyGrab         = 1, 
    	NotifyUngrab       = 2, 
    	NotifyWhileGrabbed = 3, 
    }

    Pixmap ¶

    Pixmap :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    PropertyState ¶

    PropertyState :: enum i32 {
    	PropertyNewValue = 0, 
    	PropertyDelete   = 1, 
    }

    RRCrtc ¶

    RRCrtc :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    RRMode ¶

    RRMode :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    RROutput ¶

    RROutput :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    Rotation ¶

    Rotation :: enum u16 {
    	Rotate_0   = 1, 
    	Rotate_90  = 2, 
    	Rotate_180 = 4, 
    	Rotate_270 = 8, 
    }

    SaveSetChangeMode ¶

    SaveSetChangeMode :: enum i32 {
    	SetModeInsert = 0, 
    	SetModeDelete = 1, 
    }
    Related Procedures With Parameters

    Screen ¶

    Screen :: struct {
    	ext_data:        ^XExtData,
    	display:         ^XDisplay,
    	root:            XID,
    	width:           i32,
    	height:          i32,
    	mwidth:          i32,
    	mheight:         i32,
    	ndepths:         i32,
    	depths:          ^Depth,
    	root_depth:      i32,
    	root_visual:     ^Visual,
    	default_gc:      GC,
    	cmap:            XID,
    	white_pixel:     uint,
    	black_pixel:     uint,
    	max_maps:        i32,
    	min_maps:        i32,
    	backing_store:   i32,
    	save_unders:     i32,
    	root_input_mask: int,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    ScreenFormat ¶

    ScreenFormat :: struct {
    	ext_data:       ^XExtData,
    	depth:          i32,
    	bits_per_pixel: i32,
    	scanline_pad:   i32,
    }

    ScreenSaverBlanking ¶

    ScreenSaverBlanking :: enum i32 {
    	DontPreferBlanking = 0, 
    	PreferBlanking     = 1, 
    	DefaultBlanking    = 2, 
    }
    Related Procedures With Parameters

    ScreenSaverForceMode ¶

    ScreenSaverForceMode :: enum i32 {
    	ScreenSaverReset  = 0, 
    	ScreenSaverActive = 1, 
    }
    Related Procedures With Parameters

    ScreenSavingExposures ¶

    ScreenSavingExposures :: enum i32 {
    	DontAllowExposures = 0, 
    	AllowExposures     = 1, 
    	DefaultExposures   = 2, 
    }
    Related Procedures With Parameters

    Shape ¶

    Shape :: enum i32 {
    	Complex   = 0, 
    	Nonconvex = 1, 
    	Convex    = 2, 
    }
    Related Procedures With Parameters

    SizeHints ¶

    SizeHints :: bit_set[SizeHintsBits; int]
    Related Procedures With Parameters

    SizeHintsBits ¶

    SizeHintsBits :: enum int {
    	USPosition  = 0, 
    	USSize      = 1, 
    	PPosition   = 2, 
    	PSize       = 3, 
    	PMinSize    = 4, 
    	PMaxSize    = 5, 
    	PResizeInc  = 6, 
    	PAspect     = 7, 
    	PBaseSize   = 8, 
    	PWinGravity = 9, 
    }

    Status ¶

    Status :: enum i32 {
    	Success             = 0, 
    	BadRequest          = 1, 
    	BadValue            = 2, 
    	BadWindow           = 3, 
    	BadPixmap           = 4, 
    	BadAtom             = 5, 
    	BadCursor           = 6, 
    	BadFont             = 7, 
    	BadMatch            = 8, 
    	BadDrawable         = 9, 
    	BadAccess           = 10, 
    	BadAlloc            = 11, 
    	BadColor            = 12, 
    	BadGC               = 13, 
    	BadIDChoice         = 14, 
    	BadName             = 15, 
    	BadLength           = 16, 
    	BadImplementation   = 17, 
    	FirstExtensionError = 128, 
    	LastExtensionError  = 255, 
    }
     

    NOTE(flysand): Some implementations return Status as enum, other return it as an integer. I will make it a status.

    Related Procedures With Returns

    SubpixelOrder ¶

    SubpixelOrder :: enum u16 {
    	Unknown       = 0, 
    	HorizontalRGB = 1, 
    	HorizontalBGR = 2, 
    	VerticalRGB   = 3, 
    	VerticalBGR   = 4, 
    	None          = 5, 
    }

    SubwindowMode ¶

    SubwindowMode :: enum i32 {
    	ClipByChildren   = 0, 
    	IncludeInferiors = 1, 
    }
    Related Procedures With Parameters

    VisibilityState ¶

    VisibilityState :: enum i32 {
    	VisibilityUnobscured        = 0, 
    	VisibilityPartiallyObscured = 1, 
    	VisibilityFullyObscured     = 2, 
    }

    Visual ¶

    Visual :: struct {
    	ext_data:     ^XExtData,
    	visualid:     VisualID,
    	class:        i32,
    	red_mask:     uint,
    	green_mask:   uint,
    	blue_mask:    uint,
    	bits_per_rgb: i32,
    	map_entries:  i32,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    VisualID ¶

    VisualID :: distinct uint
    Related Procedures With Returns

    VisualInfoMask ¶

    VisualInfoMask :: bit_set[VisualInfoMaskBits; int]
    Related Procedures With Parameters
    Related Constants

    VisualInfoMaskBits ¶

    VisualInfoMaskBits :: enum int {
    	VisualIDMask           = 0, 
    	VisualScreenMask       = 1, 
    	VisualDepthMask        = 2, 
    	VisualClassMask        = 3, 
    	VisualRedMaskMask      = 4, 
    	VisualGreenMaskMask    = 5, 
    	VisualBlueMaskMask     = 6, 
    	VisualColormapSizeMask = 7, 
    	VisualBitsPerRGBMask   = 8, 
    }

    WMHintState ¶

    WMHintState :: enum i32 {
    	WithdrawnState = 0, 
    	NormalState    = 1, 
    	IconicState    = 3, 
    }

    WMHints ¶

    WMHints :: bit_set[WMHintsBits; uint]
    Related Constants

    WMHintsBits ¶

    WMHintsBits :: enum int {
    	InputHint        = 0, 
    	StateHint        = 1, 
    	IconPixmapHint   = 2, 
    	IconWindowHint   = 3, 
    	IconPositionHint = 4, 
    	IconMaskHint     = 5, 
    	WindowGroupHint  = 6, 
    	XUrgencyHint     = 8, 
    }

    Window ¶

    Window :: XID
    Related Procedures With Parameters
    Related Procedures With Returns

    WindowAttributeMask ¶

    WindowAttributeMask :: bit_set[WindowAttributeMaskBits; int]
    Related Procedures With Parameters

    WindowAttributeMaskBits ¶

    WindowAttributeMaskBits :: enum int {
    	CWBackPixmap       = 0, 
    	CWBackPixel        = 1, 
    	CWBorderPixmap     = 2, 
    	CWBorderPixel      = 3, 
    	CWBitGravity       = 4, 
    	CWWinGravity       = 5, 
    	CWBackingStore     = 6, 
    	CWBackingPlanes    = 7, 
    	CWBackingPixel     = 8, 
    	CWOverrideRedirect = 9, 
    	CWSaveUnder        = 10, 
    	CWEventMask        = 11, 
    	CWDontPropagate    = 12, 
    	CWColormap         = 13, 
    	CWCursor           = 14, 
    }

    WindowChangesMask ¶

    WindowChangesMask :: bit_set[WindowChangesMaskBits; i32]
    Related Procedures With Parameters

    WindowChangesMaskBits ¶

    WindowChangesMaskBits :: enum int {
    	CWX           = 0, 
    	CWY           = 1, 
    	CWWidth       = 2, 
    	CWHeight      = 3, 
    	CWBorderWidth = 4, 
    	CWSibling     = 5, 
    	CWStackMode   = 6, 
    }

    WindowClass ¶

    WindowClass :: enum i32 {
    	CopyFromParent = 0, 
    	InputOutput    = 1, 
    	InputOnly      = 2, 
    }
    Related Procedures With Parameters

    WindowMapState ¶

    WindowMapState :: enum i32 {
    	IsUnmapped   = 0, 
    	IsUnviewable = 1, 
    	IsViewable   = 2, 
    }

    WindowStacking ¶

    WindowStacking :: enum i32 {
    	Above    = 0, 
    	Below    = 1, 
    	TopIf    = 2, 
    	BottomIf = 3, 
    	Opposite = 4, 
    }

    XAnyEvent ¶

    XAnyEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    }

    XArc ¶

    XArc :: struct {
    	x:      i16,
    	y:      i16,
    	width:  u16,
    	height: u16,
    	angle1: i16,
    	angle2: i16,
    }
    Related Procedures With Parameters

    XButtonEvent ¶

    XButtonEvent :: struct {
    	type:        EventType,
    	serial:      uint,
    	send_event:  b32,
    	display:     ^Display,
    	window:      XID,
    	root:        XID,
    	subwindow:   XID,
    	time:        Time,
    	x:           i32,
    	y:           i32,
    	x_root:      i32,
    	y_root:      i32,
    	state:       bit_set[InputMaskBits; i32],
    	button:      MouseButton,
    	same_screen: b32,
    }

    XChar2b ¶

    XChar2b :: struct {
    	byte1: u8,
    	byte2: u8,
    }
    Related Procedures With Parameters

    XCharStruct ¶

    XCharStruct :: struct {
    	lbearing:   i16,
    	rbearing:   i16,
    	width:      i16,
    	ascent:     i16,
    	descent:    i16,
    	attributes: u16,
    }
    Related Procedures With Parameters

    XCirculateEvent ¶

    XCirculateEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	event:      XID,
    	window:     XID,
    	place:      CirculationRequest,
    }

    XCirculateRequestEvent ¶

    XCirculateRequestEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	parent:     XID,
    	window:     XID,
    	place:      CirculationRequest,
    }

    XClassHint ¶

    XClassHint :: struct {
    	res_name:  cstring,
    	res_class: cstring,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XClientMessageEvent ¶

    XClientMessageEvent :: struct {
    	type:         EventType,
    	serial:       uint,
    	send_event:   b32,
    	display:      ^Display,
    	window:       XID,
    	message_type: Atom,
    	format:       i32,
    	data:         struct #raw_union {
    		b: [20]i8,
    		s: [10]i16,
    		l: [5]int,
    	},
    }

    XColor ¶

    XColor :: struct {
    	pixel: uint,
    	red:   u16,
    	green: u16,
    	blue:  u16,
    	flags: u8,
    	pad:   u8,
    }
    Related Procedures With Parameters

    XColormapEvent ¶

    XColormapEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	colormap:   XID,
    	new:        b32,
    	state:      ColormapState,
    }

    XComposeStatus ¶

    XComposeStatus :: struct {
    	compose_ptr:   rawptr,
    	chars_matched: i32,
    }
    Related Procedures With Parameters

    XConfigureEvent ¶

    XConfigureEvent :: struct {
    	type:              EventType,
    	serial:            uint,
    	send_event:        b32,
    	display:           ^Display,
    	event:             XID,
    	window:            XID,
    	x:                 i32,
    	y:                 i32,
    	width:             i32,
    	height:            i32,
    	border_width:      i32,
    	above:             XID,
    	override_redirect: b32,
    }

    XConfigureRequestEvent ¶

    XConfigureRequestEvent :: struct {
    	type:         EventType,
    	serial:       uint,
    	send_event:   b32,
    	display:      ^Display,
    	parent:       XID,
    	window:       XID,
    	x:            i32,
    	y:            i32,
    	width:        i32,
    	height:       i32,
    	border_width: i32,
    	above:        XID,
    	detail:       WindowStacking,
    	value_mask:   uint,
    }

    XConnectionWatchProc ¶

    XConnectionWatchProc :: proc "c" (display: ^Display, client_data: rawptr, fd: i32, opening: b32, watch_data: rawptr)
    Related Procedures With Parameters

    XContext ¶

    XContext :: i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XCreateWindowEvent ¶

    XCreateWindowEvent :: struct {
    	type:              EventType,
    	serial:            uint,
    	send_event:        b32,
    	display:           ^Display,
    	parent:            XID,
    	window:            XID,
    	x:                 i32,
    	y:                 i32,
    	width:             i32,
    	height:            i32,
    	border_width:      i32,
    	override_redirect: b32,
    }

    XCrossingEvent ¶

    XCrossingEvent :: struct {
    	type:        EventType,
    	serial:      uint,
    	send_event:  b32,
    	display:     ^Display,
    	window:      XID,
    	root:        XID,
    	subwindow:   XID,
    	time:        Time,
    	x:           i32,
    	y:           i32,
    	x_root:      i32,
    	y_root:      i32,
    	mode:        NotifyMode,
    	detail:      NotifyDetail,
    	same_screen: b32,
    	focus:       i32,
    	state:       bit_set[InputMaskBits; i32],
    }

    XDestroyWindowEvent ¶

    XDestroyWindowEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	event:      XID,
    	window:     XID,
    }

    XDisplay ¶

    XDisplay :: struct {}

    XEDataObject ¶

    XEDataObject :: struct #raw_union {
    	display:       ^Display,
    	gc:            GC,
    	visual:        ^Visual,
    	screen:        ^Screen,
    	pixmap_format: ^ScreenFormat,
    	font:          ^XFontStruct,
    }

    XErrorEvent ¶

    XErrorEvent :: struct {
    	type:         EventType,
    	display:      ^Display,
    	resourceid:   XID,
    	serial:       uint,
    	error_code:   u8,
    	request_code: u8,
    	minor_code:   u8,
    }

    XEvent ¶

    XEvent :: struct #raw_union {
    	type:              EventType,
    	xany:              XAnyEvent,
    	xkey:              XKeyEvent,
    	xbutton:           XButtonEvent,
    	xmotion:           XMotionEvent,
    	xcrossing:         XCrossingEvent,
    	xfocus:            XFocusChangeEvent,
    	xexpose:           XExposeEvent,
    	xgraphicsexpose:   XGraphicsExposeEvent,
    	xnoexpose:         XNoExposeEvent,
    	xvisibility:       XVisibilityEvent,
    	xcreatewindow:     XCreateWindowEvent,
    	xdestroywindow:    XDestroyWindowEvent,
    	xunmap:            XUnmapEvent,
    	xmap:              XMapEvent,
    	xmaprequest:       XMapRequestEvent,
    	xreparent:         XReparentEvent,
    	xconfigure:        XConfigureEvent,
    	xgravity:          XGravityEvent,
    	xresizerequest:    XResizeRequestEvent,
    	xconfigurerequest: XConfigureRequestEvent,
    	xcirculate:        XCirculateEvent,
    	xcirculaterequest: XCirculateRequestEvent,
    	xproperty:         XPropertyEvent,
    	xselectionclear:   XSelectionClearEvent,
    	xselectionrequest: XSelectionRequestEvent,
    	xselection:        XSelectionEvent,
    	xcolormap:         XColormapEvent,
    	xclient:           XClientMessageEvent,
    	xmapping:          XMappingEvent,
    	xerror:            XErrorEvent,
    	xkeymap:           XKeymapEvent,
    	xgeneric:          XGenericEvent,
    	xcookie:           XGenericEventCookie,
    	_:                 [24]int,
    }
    Related Procedures With Parameters

    XExposeEvent ¶

    XExposeEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	x:          i32,
    	y:          i32,
    	width:      i32,
    	height:     i32,
    	count:      i32,
    }

    XExtCodes ¶

    XExtCodes :: struct {
    	extension:    i32,
    	major_opcode: i32,
    	first_event:  i32,
    	first_error:  i32,
    }

    XExtData ¶

    XExtData :: struct {
    	number:       i32,
    	next:         ^XExtData,
    	free_private: proc "c" (extension: ^XExtData) -> Status,
    	private_data: rawptr,
    }

    XFocusChangeEvent ¶

    XFocusChangeEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	mode:       NotifyMode,
    	detail:     NotifyDetail,
    }

    XFontProp ¶

    XFontProp :: struct {
    	name:   Atom,
    	card32: uint,
    }

    XFontSet ¶

    XFontSet :: XOC

    XFontSetExtents ¶

    XFontSetExtents :: struct {
    	max_ink_extent:     XRectangle,
    	max_logical_extent: XRectangle,
    }

    XFontStruct ¶

    XFontStruct :: struct {
    	ext_data:          ^XExtData,
    	fid:               XID,
    	direction:         u32,
    	min_char_or_byte2: u32,
    	max_char_or_byte2: u32,
    	min_byte1:         u32,
    	max_byte1:         u32,
    	all_chars_exist:   i32,
    	default_char:      u32,
    	n_properties:      i32,
    	properties:        ^XFontProp,
    	min_bounds:        XCharStruct,
    	max_bounds:        XCharStruct,
    	per_char:          ^XCharStruct,
    	ascent:            i32,
    	descent:           i32,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XGCValues ¶

    XGCValues :: struct {
    	function:           GCFunction,
    	plane_mask:         uint,
    	foreground:         uint,
    	background:         uint,
    	line_width:         i32,
    	line_style:         LineStyle,
    	cap_style:          CapStyle,
    	join_style:         JoinStyle,
    	fill_style:         FillStyle,
    	fill_rule:          FillRule,
    	arc_mode:           ArcMode,
    	tile:               XID,
    	stipple:            XID,
    	ts_x_origin:        i32,
    	ts_y_origin:        i32,
    	font:               XID,
    	subwindow_mode:     SubwindowMode,
    	graphics_exposures: b32,
    	clip_x_origin:      i32,
    	clip_y_origin:      i32,
    	clip_mask:          XID,
    	dash_offset:        i32,
    	dashes:             i8,
    }
    Related Procedures With Parameters

    XGenericEvent ¶

    XGenericEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	extension:  i32,
    	evtype:     i32,
    }

    XGenericEventCookie ¶

    XGenericEventCookie :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	extension:  i32,
    	evtype:     i32,
    	cookie:     u32,
    	data:       rawptr,
    }
    Related Procedures With Parameters

    XGraphicsExposeEvent ¶

    XGraphicsExposeEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	drawable:   XID,
    	x:          i32,
    	y:          i32,
    	width:      i32,
    	height:     i32,
    	count:      i32,
    	major_code: i32,
    	minor_code: i32,
    }

    XGravityEvent ¶

    XGravityEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	event:      XID,
    	window:     XID,
    	x:          i32,
    	y:          i32,
    }

    XHostAddress ¶

    XHostAddress :: struct {
    	family:  i32,
    	length:  i32,
    	address: rawptr,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XIC ¶

    XIC :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    XICCEncodingStyle ¶

    XICCEncodingStyle :: enum i32 {
    	XStringStyle, 
    	XCompoundTextStyle, 
    	XTextStyle, 
    	XStdICCTextStyle, 
    	XUTF8StringStyle, 
    }

    XICCallback ¶

    XICCallback :: struct {
    	client_data: rawptr,
    	callback:    XICProc,
    }

    XICProc ¶

    XICProc :: proc "c" (xim: XIM, client_data: rawptr, call_data: rawptr)

    XID ¶

    XID :: distinct uint
    Related Procedures With Parameters
    Related Procedures With Returns

    XIDProc ¶

    XIDProc :: proc "c" (xim: XIM, client_data: rawptr, call_data: rawptr)

    XIEventMask ¶

    XIEventMask :: struct {
    	deviceid: i32,
    	mask_len: i32,
    	mask:     [^]u8,
    }
    Related Procedures With Parameters

    XIEventType ¶

    XIEventType :: enum i32 {
    	DeviceChanged      = 1, 
    	KeyPress, 
    	KeyRelease, 
    	ButtonPress, 
    	ButtonRelease, 
    	Motion, 
    	Enter, 
    	Leave, 
    	FocusIn, 
    	FocusOut, 
    	HierarchyChanged, 
    	Property, 
    	RawKeyPress, 
    	RawKeyRelease, 
    	RawButtonPress, 
    	RawButtonRelease, 
    	RawMotion, 
    	TouchBegin, 
    	TouchUpdate, 
    	TouchEnd, 
    	TouchOwnership, 
    	RawTouchBegin, 
    	RawTouchUpdate, 
    	RawTouchEnd, 
    	BarrierHit, 
    	BarrierLeave, 
    	GesturePinchBegin, 
    	GesturePinchUpdate, 
    	GesturePinchEnd, 
    	GestureSwipeBegin, 
    	GestureSwipeUpdate, 
    	GestureSwipeEnd, 
    	LastEvent          = GestureSwipeEnd, 
    }
    Related Procedures With Parameters

    XIM ¶

    XIM :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    XIMCallback ¶

    XIMCallback :: struct {
    	client_data: rawptr,
    	callback:    XIMProc,
    }

    XIMCaretDirection ¶

    XIMCaretDirection :: enum i32 {
    	XIMForwardChar      = 0, 
    	XIMBackwardChar     = 1, 
    	XIMForwardWord      = 2, 
    	XIMBackwardWord     = 3, 
    	XIMCaretUp          = 4, 
    	XIMCaretDown        = 5, 
    	XIMNextLine         = 6, 
    	XIMPreviousLine     = 7, 
    	XIMLineStart        = 8, 
    	XIMLineEnd          = 9, 
    	XIMAbsolutePosition = 10, 
    	XIMDontChang        = 11, 
    }

    XIMCaretStyle ¶

    XIMCaretStyle :: enum i32 {
    	XIMIsInvisible, 
    	XIMIsPrimary, 
    	XIMIsSecondary, 
    }

    XIMHotKeyTrigger ¶

    XIMHotKeyTrigger :: struct {
    	keysym:        KeySym,
    	modifier:      i32,
    	modifier_mask: i32,
    }

    XIMHotKeyTriggers ¶

    XIMHotKeyTriggers :: struct {
    	num_hot_key: i32,
    	key:         [^]XIMHotKeyTrigger,
    }

    XIMPreeditCaretCallbackStruct ¶

    XIMPreeditCaretCallbackStruct :: struct {
    	position:  i32,
    	direction: XIMCaretDirection,
    	style:     XIMCaretStyle,
    }

    XIMPreeditDrawCallbackStruct ¶

    XIMPreeditDrawCallbackStruct :: struct {
    	caret:      i32,
    	chg_first:  i32,
    	chg_length: i32,
    	text:       ^XIMText,
    }

    XIMPreeditStateNotifyCallbackStruct ¶

    XIMPreeditStateNotifyCallbackStruct :: struct {
    	state: uint,
    }

    XIMProc ¶

    XIMProc :: proc "c" (xim: XIM, client_data: rawptr, call_data: rawptr)

    XIMStatusDataType ¶

    XIMStatusDataType :: enum int {
    	XIMTextType, 
    	XIMBitmapType, 
    }

    XIMStatusDrawCallbackStruct ¶

    XIMStatusDrawCallbackStruct :: struct {
    	type: XIMStatusDataType,
    	data: struct #raw_union {
    		text:   ^XIMText,
    		bitmap: XID,
    	},
    }

    XIMStringConversionCallbackStruct ¶

    XIMStringConversionCallbackStruct :: struct {
    	position:  u16,
    	direction: XIMCaretDirection,
    	operation: u16,
    	factor:    u16,
    	text:      ^XIMStringConversionText,
    }

    XIMStringConversionOperation ¶

    XIMStringConversionOperation :: u16

    XIMStringConversionPosition ¶

    XIMStringConversionPosition :: u16

    XIMStringConversionText ¶

    XIMStringConversionText :: struct {
    	length:            u16,
    	feedback:          ^uint,
    	encoding_is_wchar: b32,
    	string:            struct #raw_union {
    		mbs: [^]u8,
    		wcs: [^]rune,
    	},
    }

    XIMStringConversionType ¶

    XIMStringConversionType :: u16

    XIMStyles ¶

    XIMStyles :: struct {
    	count_styles:     u16,
    	supported_styles: [^]uint,
    }

    XIMText ¶

    XIMText :: struct {
    	length:            u16,
    	feedback:          ^uint,
    	encoding_is_wchar: b32,
    	string:            struct #raw_union {
    		multi_byte: [^]u8,
    		wide_char:  [^]rune,
    	},
    }

    XIMValuesList ¶

    XIMValuesList :: struct {
    	count_values:     u16,
    	supported_values: [^]cstring,
    }

    XIRawEvent ¶

    XIRawEvent :: struct {
    	type:       EventType,
    	serial:     u64,
    	send_event: b32,
    	display:    ^Display,
    	extension:  i32,
    	evtype:     XIEventType,
    	time:       Time,
    	deviceid:   i32,
    	sourceid:   i32,
    	detail:     i32,
    	flags:      i32,
    	valuators:  XIValuatorState,
    	raw_values: [^]f64,
    }

    XIValuatorState ¶

    XIValuatorState :: struct {
    	mask_len: i32,
    	mask:     [^]u8,
    	values:   [^]f64,
    }

    XIconSize ¶

    XIconSize :: struct {
    	min_width:  i32,
    	min_height: i32,
    	max_width:  i32,
    	max_height: i32,
    	width_inc:  i32,
    	height_inc: i32,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XImage ¶

    XImage :: struct {
    	width:            i32,
    	height:           i32,
    	xoffset:          i32,
    	format:           ImageFormat,
    	data:             rawptr,
    	byte_order:       i32,
    	bitmap_unit:      i32,
    	bitmap_bit_order: ByteOrder,
    	bitmap_pad:       i32,
    	depth:            i32,
    	bytes_per_line:   i32,
    	bits_per_pixel:   i32,
    	red_mask:         uint,
    	green_mask:       uint,
    	blue_mask:        uint,
    	obdata:           rawptr,
    	f:                struct {
    		create_image:  proc "c" (display: ^Display, visual: ^Visual, depth: u32, format: i32, offset: i32, data: rawptr, width: u32, height: u32, pad: i32, stride: i32) -> ^XImage,
    		destroy_image: proc "c" (image: ^XImage) -> i32,
    		get_pixel:     proc "c" (image: ^XImage) -> uint,
    		put_pixel:     proc "c" (image: ^XImage, x: i32, y: i32, pixel: uint) -> i32,
    		sub_image:     proc "c" (image: ^XImage, x: i32, y: i32, w: u32, h: u32) -> ^XImage,
    		add_pixel:     proc "c" (image: ^XImage, val: int) -> i32,
    	},
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XKeyEvent ¶

    XKeyEvent :: struct {
    	type:        EventType,
    	serial:      uint,
    	send_event:  b32,
    	display:     ^Display,
    	window:      XID,
    	root:        XID,
    	subwindow:   XID,
    	time:        Time,
    	x:           i32,
    	y:           i32,
    	x_root:      i32,
    	y_root:      i32,
    	state:       bit_set[InputMaskBits; i32],
    	keycode:     u32,
    	same_screen: b32,
    }
    Related Procedures With Parameters

    XKeyPressedEvent ¶

    XKeyPressedEvent :: XKeyEvent
    Related Procedures With Parameters

    XKeyReleasedEvent ¶

    XKeyReleasedEvent :: XKeyEvent
    Related Procedures With Parameters

    XKeyboardControl ¶

    XKeyboardControl :: struct {
    	key_click_percent: i32,
    	bell_percent:      i32,
    	bell_pitch:        i32,
    	bell_duration:     i32,
    	led:               i32,
    	led_mode:          KeyboardLedMode,
    	key:               i32,
    	auto_repeat_mode:  KeyboardAutoRepeatMode,
    }
    Related Procedures With Parameters

    XKeyboardState ¶

    XKeyboardState :: struct {
    	key_click_percent:  i32,
    	bell_percent:       i32,
    	bell_pitch:         u32,
    	bell_duration:      u32,
    	led_mask:           uint,
    	global_auto_repeat: i32,
    	auto_repeats:       [32]u8,
    }
    Related Procedures With Parameters

    XKeymapEvent ¶

    XKeymapEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	key_vector: [32]u8,
    }

    XMapEvent ¶

    XMapEvent :: struct {
    	type:              EventType,
    	serial:            uint,
    	send_event:        b32,
    	display:           ^Display,
    	event:             XID,
    	window:            XID,
    	override_redirect: b32,
    }

    XMapRequestEvent ¶

    XMapRequestEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	parent:     XID,
    	window:     XID,
    }

    XMappingEvent ¶

    XMappingEvent :: struct {
    	type:          EventType,
    	serial:        uint,
    	send_event:    b32,
    	display:       ^Display,
    	window:        XID,
    	request:       MappingRequest,
    	first_keycode: i32,
    	count:         i32,
    }
    Related Procedures With Parameters

    XModifierKeymap ¶

    XModifierKeymap :: struct {
    	max_keypermod: i32,
    	modifiermap:   ^u8,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XMotionEvent ¶

    XMotionEvent :: struct {
    	type:        EventType,
    	serial:      uint,
    	send_event:  b32,
    	display:     ^Display,
    	window:      XID,
    	root:        XID,
    	subwindow:   XID,
    	time:        Time,
    	x:           i32,
    	y:           i32,
    	x_root:      i32,
    	y_root:      i32,
    	state:       bit_set[InputMaskBits; i32],
    	is_hint:     b8,
    	same_screen: b32,
    }

    XNoExposeEvent ¶

    XNoExposeEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	drawable:   XID,
    	major_code: i32,
    	minor_code: i32,
    }

    XOC ¶

    XOC :: distinct rawptr

    XOM ¶

    XOM :: distinct rawptr

    XOMCharSetList ¶

    XOMCharSetList :: struct {
    	charset_count: i32,
    	charset_list:  [^]cstring,
    }

    XOMFontInfo ¶

    XOMFontInfo :: struct {
    	num_font:         i32,
    	font_struct_list: [^]^XFontStruct,
    	font_name_list:   [^]cstring,
    }

    XOMOrientation ¶

    XOMOrientation :: struct {
    	num_orientation: i32,
    	orientation:     [^]XOrientation,
    }

    XOrientation ¶

    XOrientation :: enum i32 {
    	XOMOrientation_LTR_TTB = 0, 
    	XOMOrientation_RTL_TTB = 1, 
    	XOMOrientation_TTB_LTR = 2, 
    	XOMOrientation_TTB_RTL = 3, 
    	XOMOrientation_Context = 4, 
    }

    XPixmapFormatValues ¶

    XPixmapFormatValues :: struct {
    	depth:          i32,
    	bits_per_pixel: i32,
    	scanline_pad:   i32,
    }
    Related Procedures With Returns

    XPoint ¶

    XPoint :: struct {
    	x: i16,
    	y: i16,
    }
    Related Procedures With Parameters

    XPropertyEvent ¶

    XPropertyEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	atom:       Atom,
    	time:       Time,
    	state:      PropertyState,
    }

    XRRCrtcInfo ¶

    XRRCrtcInfo :: struct {
    	timestamp: Time,
    	x:         i32,
    	y:         i32,
    	width:     u32,
    	height:    u32,
    	mode:      XID,
    	rotation:  Rotation,
    	noutput:   i32,
    	outputs:   [^]XID,
    	rotations: Rotation,
    	npossible: i32,
    	possible:  [^]XID,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XRRModeBits ¶

    XRRModeBits :: enum u8 {
    	RR_HSyncPositive  = 0, 
    	RR_HSyncNegative  = 1, 
    	RR_VSyncPositive  = 2, 
    	RR_VSyncNegative  = 3, 
    	RR_Interlace      = 4, 
    	RR_DoubleScan     = 5, 
    	RR_CSync          = 6, 
    	RR_CSyncPositive  = 7, 
    	RR_CSyncNegative  = 8, 
    	RR_HSkewPresent   = 9, 
    	RR_BCast          = 10, 
    	RR_PixelMultiplex = 11, 
    	RR_DoubleClock    = 12, 
    	RR_ClockDivideBy2 = 13, 
    }

    XRRModeFlags ¶

    XRRModeFlags :: bit_set[XRRModeBits; u64]

    XRRModeInfo ¶

    XRRModeInfo :: struct {
    	id:         XID,
    	width:      u32,
    	height:     u32,
    	dotClock:   u64,
    	hSyncStart: u32,
    	hSyncEnd:   u32,
    	hTotal:     u32,
    	hSkew:      u32,
    	vSyncStart: u32,
    	vSyncEnd:   u32,
    	vTotal:     u32,
    	name:       cstring,
    	nameLength: u32,
    	modeFlags:  bit_set[XRRModeBits; u64],
    }

    XRRMonitorInfo ¶

    XRRMonitorInfo :: struct {
    	name:      Atom,
    	primary:   b32,
    	automatic: b32,
    	noutput:   i32,
    	x:         i32,
    	y:         i32,
    	width:     i32,
    	height:    i32,
    	mwidth:    i32,
    	mheight:   i32,
    	outputs:   [^]XID,
    }
    Related Procedures With Returns

    XRROutputInfo ¶

    XRROutputInfo :: struct {
    	timestamp:      Time,
    	crtc:           XID,
    	name:           cstring,
    	nameLen:        i32,
    	mm_width:       u64,
    	mm_height:      u64,
    	connection:     Connection,
    	subpixel_order: SubpixelOrder,
    	ncrtc:          i32,
    	crtcs:          [^]XID,
    	nclone:         i32,
    	clones:         [^]XID,
    	nmode:          i32,
    	npreferred:     i32,
    	modes:          [^]XID,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XRRScreenResources ¶

    XRRScreenResources :: struct {
    	timestamp:       Time,
    	configTimestamp: Time,
    	ncrtc:           i32,
    	crtcs:           [^]XID,
    	noutput:         i32,
    	outputs:         [^]XID,
    	nmode:           i32,
    	modes:           [^]XRRModeInfo,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XRRScreenSize ¶

    XRRScreenSize :: struct {
    	width:   i32,
    	height:  i32,
    	mwidth:  i32,
    	mheight: i32,
    }
    Related Procedures With Returns

    XRectangle ¶

    XRectangle :: struct {
    	x:      i16,
    	y:      i16,
    	width:  u16,
    	height: u16,
    }
    Related Procedures With Parameters

    XReparentEvent ¶

    XReparentEvent :: struct {
    	type:              EventType,
    	serial:            uint,
    	send_event:        b32,
    	display:           ^Display,
    	event:             XID,
    	window:            XID,
    	parent:            XID,
    	x:                 i32,
    	y:                 i32,
    	override_redirect: b32,
    }

    XResizeRequestEvent ¶

    XResizeRequestEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	width:      i32,
    	height:     i32,
    }

    XSegment ¶

    XSegment :: struct {
    	x1: i16,
    	y1: i16,
    	x2: i16,
    	y2: i16,
    }
    Related Procedures With Parameters

    XSelectionClearEvent ¶

    XSelectionClearEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	selection:  Atom,
    	time:       Time,
    }

    XSelectionEvent ¶

    XSelectionEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	requestor:  XID,
    	selection:  Atom,
    	target:     Atom,
    	property:   Atom,
    	time:       Time,
    }

    XSelectionRequestEvent ¶

    XSelectionRequestEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	owner:      XID,
    	requestor:  XID,
    	selection:  Atom,
    	target:     Atom,
    	property:   Atom,
    	time:       Time,
    }

    XServerInterpretedAddress ¶

    XServerInterpretedAddress :: struct {
    	typelength:  i32,
    	valuelength: i32,
    	type:        [^]u8,
    	value:       [^]u8,
    }

    XSetWindowAttributes ¶

    XSetWindowAttributes :: struct {
    	background_pixmap:     XID,
    	background_pixel:      uint,
    	border_pixmap:         XID,
    	border_pixel:          uint,
    	bit_gravity:           Gravity,
    	win_gravity:           Gravity,
    	backing_store:         BackingStore,
    	backing_planes:        uint,
    	backing_pixel:         uint,
    	save_under:            b32,
    	event_mask:            bit_set[EventMaskBits; int],
    	do_not_propagate_mask: bit_set[EventMaskBits; int],
    	override_redirect:     b32,
    	colormap:              XID,
    	cursor:                XID,
    }
    Related Procedures With Parameters

    XSizeHints ¶

    XSizeHints :: struct {
    	flags:       bit_set[SizeHintsBits; int],
    	x:           i32,
    	y:           i32,
    	width:       i32,
    	height:      i32,
    	min_width:   i32,
    	min_height:  i32,
    	max_width:   i32,
    	max_height:  i32,
    	width_inc:   i32,
    	height_inc:  i32,
    	min_aspect:  struct {
    		x: i32,
    		y: i32,
    	},
    	max_aspect:  struct {
    		x: i32,
    		y: i32,
    	},
    	base_width:  i32,
    	base_height: i32,
    	win_gravity: i32,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XStandardColormap ¶

    XStandardColormap :: struct {
    	colormap:   XID,
    	red_max:    uint,
    	red_mult:   uint,
    	green_max:  uint,
    	green_mult: uint,
    	blue_max:   uint,
    	blue_mult:  uint,
    	base_pixel: uint,
    	visualid:   VisualID,
    	killid:     XID,
    }
    Related Procedures With Parameters

    XTextItem ¶

    XTextItem :: struct {
    	chars:  [^]u8,
    	nchars: i32,
    	delta:  i32,
    	font:   XID,
    }
    Related Procedures With Parameters

    XTextItem16 ¶

    XTextItem16 :: struct {
    	chars:  ^XChar2b,
    	nchars: i32,
    	delta:  i32,
    	font:   XID,
    }
    Related Procedures With Parameters

    XTextProperty ¶

    XTextProperty :: struct {
    	value:    [^]u8,
    	encoding: Atom,
    	format:   int,
    	nitems:   uint,
    }
    Related Procedures With Parameters

    XTimeCoord ¶

    XTimeCoord :: struct {
    	time: Time,
    	x:    i16,
    	y:    i16,
    }
    Related Procedures With Returns

    XUnmapEvent ¶

    XUnmapEvent :: struct {
    	type:           EventType,
    	serial:         uint,
    	send_event:     b32,
    	display:        ^Display,
    	event:          XID,
    	window:         XID,
    	from_configure: b32,
    }

    XVaNestedList ¶

    XVaNestedList :: distinct rawptr
    Related Procedures With Returns

    XVisibilityEvent ¶

    XVisibilityEvent :: struct {
    	type:       EventType,
    	serial:     uint,
    	send_event: b32,
    	display:    ^Display,
    	window:     XID,
    	state:      VisibilityState,
    }

    XVisualInfo ¶

    XVisualInfo :: struct {
    	visual:        ^Visual,
    	visualid:      VisualID,
    	screen:        i32,
    	depth:         i32,
    	class:         i32,
    	red_mask:      uint,
    	green_mask:    uint,
    	blue_mask:     uint,
    	colormap_size: i32,
    	bits_per_rgb:  i32,
    }
    Related Procedures With Parameters

    XWMHints ¶

    XWMHints :: struct {
    	flags:         bit_set[WMHintsBits; uint],
    	input:         b32,
    	initial_state: WMHintState,
    	icon_pixmap:   XID,
    	icon_window:   XID,
    	icon_x:        i32,
    	icon_y:        i32,
    	icon_mask:     XID,
    	window_group:  XID,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XWindowAttributes ¶

    XWindowAttributes :: struct {
    	x:                     i32,
    	y:                     i32,
    	width:                 i32,
    	height:                i32,
    	border_width:          i32,
    	depth:                 i32,
    	visual:                ^Visual,
    	root:                  XID,
    	class:                 WindowClass,
    	bit_gravity:           Gravity,
    	win_gravity:           Gravity,
    	backing_store:         BackingStore,
    	backing_planes:        uint,
    	backing_pixel:         uint,
    	save_under:            b32,
    	colormap:              XID,
    	map_installed:         b32,
    	map_state:             WindowMapState,
    	all_event_masks:       bit_set[EventMaskBits; int],
    	your_event_mask:       bit_set[EventMaskBits; int],
    	do_not_propagate_mask: bit_set[EventMaskBits; int],
    	override_redirect:     b32,
    	screen:                ^Screen,
    }
    Related Procedures With Parameters

    XWindowChanges ¶

    XWindowChanges :: struct {
    	x:            i32,
    	y:            i32,
    	width:        i32,
    	height:       i32,
    	border_width: i32,
    	sibling:      XID,
    	stack_mode:   WindowStacking,
    }
    Related Procedures With Parameters

    XcmsCCCRec ¶

    XcmsCCCRec :: struct {
    	dpy:                  ^Display,
    	screenNumber:         i32,
    	visual:               ^Visual,
    	clientWhitePt:        XcmsColor,
    	gamutCompProc:        XcmsCompressionProc,
    	gamutCompClientData:  rawptr,
    	whitePtAdjProc:       XcmsWhiteAdjustProc,
    	whitePtAdjClientData: rawptr,
    	pPerScrnInfo:         ^XcmsPerScrnInfo,
    }

    XcmsCIELab ¶

    XcmsCIELab :: struct {
    	L_star: f64,
    	a_star: f64,
    	b_star: f64,
    }

    XcmsCIELuv ¶

    XcmsCIELuv :: struct {
    	L_star: f64,
    	u_star: f64,
    	v_star: f64,
    }

    XcmsCIEXYZ ¶

    XcmsCIEXYZ :: struct {
    	X: f64,
    	Y: f64,
    	Z: f64,
    }

    XcmsCIEuvY ¶

    XcmsCIEuvY :: struct {
    	u_prime: f64,
    	v_prime: f64,
    	Y:       f64,
    }

    XcmsCIExyY ¶

    XcmsCIExyY :: struct {
    	x: f64,
    	y: f64,
    	Y: f64,
    }

    XcmsColorSpace ¶

    XcmsColorSpace :: struct {
    	prefix:       cstring,
    	id:           uint,
    	parseString:  XcmsParseStringProc,
    	to_CIEXYZ:    [^]XcmsDIConversionProc,
    	from_CIEXYZ:  [^]XcmsDIConversionProc,
    	inverse_flag: i32,
    }

    XcmsCompressionProc ¶

    XcmsCompressionProc :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status
    Related Procedures With Parameters

    XcmsDDConversionProc ¶

    XcmsDDConversionProc :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, compressed: [^]b32) -> i32

    XcmsDIConversionProc ¶

    XcmsDIConversionProc :: proc "c" (ctx: XcmsCCC, white_point: ^XcmsColor, colors: ^XcmsColor, ncolors: u32) -> i32

    XcmsFunctionSet ¶

    XcmsFunctionSet :: struct {
    	DDColorSpaces:  [^]^XcmsColorSpace,
    	screenInitProc: XcmsScreenInitProc,
    	screenFreeProc: XcmsScreenFreeProc,
    }

    XcmsPad ¶

    XcmsPad :: struct {
    	_: f64,
    	_: f64,
    	_: f64,
    	_: f64,
    }

    XcmsParseStringProc ¶

    XcmsParseStringProc :: proc "c" (color_string: cstring, color: ^XcmsColor) -> i32

    XcmsPerScrnInfo ¶

    XcmsPerScrnInfo :: struct {
    	screenWhitePt: XcmsColor,
    	functionSet:   rawptr,
    	screenData:    rawptr,
    	state:         u8,
    	_:             [3]u8,
    }

    XcmsRGB ¶

    XcmsRGB :: struct {
    	red:   u16,
    	green: u16,
    	blue:  u16,
    }

    XcmsRGBi ¶

    XcmsRGBi :: struct {
    	red:   f64,
    	green: f64,
    	blue:  f64,
    }

    XcmsScreenFreeProc ¶

    XcmsScreenFreeProc :: proc "c" (screen: rawptr)

    XcmsScreenInitProc ¶

    XcmsScreenInitProc :: proc "c" (display: ^Display, screen_number: i32, screen_info: ^XcmsPerScrnInfo) -> i32

    XcmsTekHVC ¶

    XcmsTekHVC :: struct {
    	H: f64,
    	V: f64,
    	C: f64,
    }

    XcmsWhiteAdjustProc ¶

    XcmsWhiteAdjustProc :: proc "c" (ctx: XcmsCCC, initial_white_point: ^XcmsColor, target_white_point: ^XcmsColor, target_format: uint, colors: [^]XcmsColor, ncolors: u32, compression: [^]b32) -> Status
    Related Procedures With Parameters

    XkbAccessXNotifyEvent ¶

    XkbAccessXNotifyEvent :: struct {
    	type:           i32,
    	serial:         u64,
    	send_event:     b32,
    	display:        ^Display,
    	time:           Time,
    	xkb_type:       XkbEventType,
    	device:         i32,
    	detail:         i32,
    	keycode:        i32,
    	sk_delay:       i32,
    	debounce_delay: i32,
    }

    XkbAction ¶

    XkbAction :: struct #raw_union {
    	any:      XkbAnyAction,
    	mod:      XkbModAction,
    	group:    XkbGroupAction,
    	iso:      XkbISOAction,
    	ptr:      XkbPtrAction,
    	btn:      XkbPtrBtnAction,
    	dflt:     XkbPtrDfltAction,
    	screen:   XkbSwitchScreenAction,
    	ctrls:    XkbCtrlsAction,
    	msg:      XkbMessageAction,
    	redirect: XkbRedirectKeyAction,
    	devbtn:   XkbDeviceBtnAction,
    	devval:   XkbDeviceValuatorAction,
    	type:     u8,
    }

    XkbActionMessageEvent ¶

    XkbActionMessageEvent :: struct {
    	type:              i32,
    	serial:            u64,
    	send_event:        b32,
    	display:           ^Display,
    	time:              Time,
    	xkb_type:          XkbEventType,
    	device:            i32,
    	keycode:           u8,
    	press:             b32,
    	key_event_follows: b32,
    	group:             i32,
    	mods:              u32,
    	message:           [7]i8,
    }

    XkbAnyAction ¶

    XkbAnyAction :: struct {
    	type: u8,
    	data: [7]u8,
    }

    XkbAnyDoodadRec ¶

    XkbAnyDoodadRec :: struct {
    	name:     Atom,
    	type:     u8,
    	priority: u8,
    	top:      i16,
    	left:     i16,
    	angle:    i16,
    }

    XkbAnyEvent ¶

    XkbAnyEvent :: struct {
    	type:       i32,
    	serial:     u64,
    	send_event: b32,
    	display:    ^Display,
    	time:       Time,
    	xkb_type:   XkbEventType,
    	device:     u32,
    }

    XkbBehavior ¶

    XkbBehavior :: struct {
    	type: u8,
    	data: u8,
    }

    XkbBellNotifyEvent ¶

    XkbBellNotifyEvent :: struct {
    	type:       i32,
    	serial:     u64,
    	send_event: b32,
    	display:    ^Display,
    	time:       Time,
    	xkb_type:   XkbEventType,
    	device:     i32,
    	percent:    i32,
    	pitch:      i32,
    	duration:   i32,
    	bell_class: i32,
    	bell_id:    i32,
    	name:       Atom,
    	window:     XID,
    	event_only: b32,
    }

    XkbBoundsRec ¶

    XkbBoundsRec :: struct {
    	x1: i16,
    	x2: i16,
    	y1: i16,
    	y2: i16,
    }

    XkbClientMapRec ¶

    XkbClientMapRec :: struct {
    	size_types:  u8,
    	num_types:   u8,
    	types:       [^]XkbKeyTypeRec,
    	size_syms:   u16,
    	num_syms:    u16,
    	syms:        [^]XID,
    	// Keysym
    	key_sym_map: [^]XkbSymMapRec,
    	modmap:      [^]u8,
    }

    XkbColorRec ¶

    XkbColorRec :: struct {
    	pixel: u32,
    	spec:  ^u8,
    }

    XkbCompatMapNotifyEvent ¶

    XkbCompatMapNotifyEvent :: struct {
    	type:           i32,
    	serial:         u64,
    	send_event:     b32,
    	display:        ^Display,
    	time:           Time,
    	xkb_type:       XkbEventType,
    	device:         i32,
    	changed_groups: u32,
    	first_si:       i32,
    	num_si:         i32,
    	num_total_si:   i32,
    }

    XkbCompatMapRec ¶

    XkbCompatMapRec :: struct {
    	sym_interpret: [^]XkbSymInterpretRec,
    	groups:        [4]XkbModsRec,
    	num_si:        u16,
    	size_si:       u16,
    }

    XkbControlsNotifyEvent ¶

    XkbControlsNotifyEvent :: struct {
    	type:                  i32,
    	serial:                u64,
    	send_event:            b32,
    	display:               ^Display,
    	time:                  Time,
    	xkb_type:              XkbEventType,
    	device:                i32,
    	changed_ctrls:         u32,
    	enabled_ctrls:         u32,
    	enabled_ctrls_changes: u32,
    	num_groups:            i32,
    	keycode:               u8,
    	event_type:            i8,
    	req_major:             i8,
    	req_minor:             i8,
    }

    XkbControlsRec ¶

    XkbControlsRec :: struct {
    	mk_dflt_btn:      u8,
    	num_groups:       u8,
    	groups_wrap:      u8,
    	internal:         XkbModsRec,
    	ignore_lock:      XkbModsRec,
    	enabled_ctrls:    u32,
    	repeat_delay:     u16,
    	repeat_interval:  u16,
    	slow_keys_delay:  u16,
    	debounce_delay:   u16,
    	mk_delay:         u16,
    	mk_interval:      u16,
    	mk_time_to_max:   u16,
    	mk_max_speed:     u16,
    	mk_curve:         i16,
    	ax_options:       u16,
    	ax_timeout:       u16,
    	axt_opts_mask:    u16,
    	axt_opts_values:  u16,
    	axt_ctrls_mask:   u32,
    	axt_ctrls_values: u32,
    	per_key_repeat:   [32]u8,
    }

    XkbCtrlsAction ¶

    XkbCtrlsAction :: struct {
    	type:   u8,
    	flags:  u8,
    	ctrls3: u8,
    	ctrls2: u8,
    	ctrls1: u8,
    	ctrls0: u8,
    }

    XkbDescPtr ¶

    XkbDescPtr :: ^XkbDescRec
    Related Procedures With Parameters
    Related Procedures With Returns

    XkbDescRec ¶

    XkbDescRec :: struct {
    	display:      ^Display,
    	flags:        u16,
    	device_spec:  u16,
    	min_key_code: u8,
    	max_key_code: u8,
    	ctrls:        ^XkbControlsRec,
    	server:       ^XkbServerMapRec,
    	_map:         ^XkbClientMapRec,
    	indicators:   ^XkbIndicatorRec,
    	names:        ^XkbNamesRec,
    	compat:       ^XkbCompatMapRec,
    	geom:         ^XkbGeometryRec,
    }
    Related Procedures With Parameters
    Related Procedures With Returns

    XkbDeviceBtnAction ¶

    XkbDeviceBtnAction :: struct {
    	type:   u8,
    	flags:  u8,
    	count:  u8,
    	button: u8,
    	device: u8,
    }

    XkbDeviceValuatorAction ¶

    XkbDeviceValuatorAction :: struct {
    	type:     u8,
    	device:   u8,
    	v1_what:  u8,
    	v1_ndx:   u8,
    	v1_value: u8,
    	v2_what:  u8,
    	v2_ndx:   u8,
    	v2_value: u8,
    }

    XkbDoodadRec ¶

    XkbDoodadRec :: struct #raw_union {
    	any:       XkbAnyDoodadRec,
    	shape:     XkbShapeDoodadRec,
    	text:      XkbTextDoodadRec,
    	indicator: XkbIndicatorDoodadRec,
    	logo:      XkbLogoDoodadRec,
    }

    XkbEventMask ¶

    XkbEventMask :: bit_set[XkbEventType; int]
    Related Procedures With Parameters
    Related Constants

    XkbEventType ¶

    XkbEventType :: enum i32 {
    	NewKeyboardNotify     = 0, 
    	MapNotify             = 1, 
    	StateNotify           = 2, 
    	ControlsNotify        = 3, 
    	IndicatorStateNotify  = 4, 
    	IndicatorMapNotify    = 5, 
    	NamesNotify           = 6, 
    	CompatMapNotify       = 7, 
    	BellNotify            = 8, 
    	ActionMessage         = 9, 
    	AccessXNotify         = 10, 
    	ExtensionDeviceNotify = 11, 
    }

    XkbExtensionDeviceNotifyEvent ¶

    XkbExtensionDeviceNotifyEvent :: struct {
    	type:         i32,
    	serial:       u64,
    	send_event:   b32,
    	display:      ^Display,
    	time:         Time,
    	xkb_type:     XkbEventType,
    	device:       i32,
    	reason:       u32,
    	supported:    u32,
    	unsupported:  u32,
    	first_btn:    i32,
    	num_btns:     i32,
    	leds_defined: u32,
    	led_state:    u32,
    	led_class:    i32,
    	led_id:       i32,
    }

    XkbGeometryRec ¶

    XkbGeometryRec :: struct {
    	name:            Atom,
    	width_mm:        u16,
    	height_mm:       u16,
    	label_font:      cstring,
    	label_color:     ^XkbColorRec,
    	base_color:      ^XkbColorRec,
    	sz_properties:   u16,
    	sz_colors:       u16,
    	sz_shapes:       u16,
    	sz_sections:     u16,
    	sz_doodads:      u16,
    	sz_key_aliases:  u16,
    	num_properties:  u16,
    	num_colors:      u16,
    	num_shapes:      u16,
    	num_sections:    u16,
    	num_doodads:     u16,
    	num_key_aliases: u16,
    	properties:      [^]XkbPropertyRec,
    	colors:          [^]XkbColorRec,
    	shapes:          [^]XkbShapeRec,
    	sections:        [^]XkbSectionRec,
    	doodads:         [^]XkbDoodadRec,
    	key_aliases:     [^]XkbKeyAliasRec,
    }

    XkbGroupAction ¶

    XkbGroupAction :: struct {
    	type:      u8,
    	flags:     u8,
    	group_XXX: i8,
    }

    XkbISOAction ¶

    XkbISOAction :: struct {
    	type:      u8,
    	flags:     u8,
    	mask:      u8,
    	real_mods: u8,
    	group_XXX: i8,
    	affect:    u8,
    	vmods1:    u8,
    	vmods2:    u8,
    }

    XkbIndicatorDoodadRec ¶

    XkbIndicatorDoodadRec :: struct {
    	name:          Atom,
    	type:          u8,
    	priority:      u8,
    	top:           i16,
    	left:          i16,
    	angle:         i16,
    	color_ndx:     u16,
    	on_color_ndx:  u16,
    	off_color_ndx: u16,
    }

    XkbIndicatorMapRec ¶

    XkbIndicatorMapRec :: struct {
    	flags:        u8,
    	which_groups: u8,
    	groups:       u8,
    	which_mods:   u8,
    	mods:         XkbModsRec,
    	ctrls:        u32,
    }

    XkbIndicatorNotifyEvent ¶

    XkbIndicatorNotifyEvent :: struct {
    	type:       i32,
    	serial:     u64,
    	send_event: b32,
    	display:    ^Display,
    	time:       Time,
    	xkb_type:   XkbEventType,
    	device:     i32,
    	changed:    u32,
    	state:      u32,
    }

    XkbIndicatorRec ¶

    XkbIndicatorRec :: struct {
    	phys_indicators: u64,
    	maps:            [32]XkbIndicatorMapRec,
    }

    XkbInfoMask ¶

    XkbInfoMask :: bit_set[XkbInfoMaskBits; int]
    Related Procedures With Parameters
    Related Constants

    XkbInfoMaskBits ¶

    XkbInfoMaskBits :: enum u32 {
    	KeyTypes           = 0, 
    	KeySyms            = 1, 
    	ModifierMap        = 2, 
    	ExplicitComponents = 3, 
    	KeyActions         = 4, 
    	KeyBehaviors       = 5, 
    	VirtualMods        = 6, 
    	VirtualModMap      = 7, 
    }

    XkbKTMapEntryRec ¶

    XkbKTMapEntryRec :: struct {
    	active: b32,
    	level:  u8,
    	mods:   XkbModsRec,
    }

    XkbKeyAliasRec ¶

    XkbKeyAliasRec :: struct {
    	real:  [4]i8,
    	// Non nul-terminated string
    	alias: [4]i8,
    }

    XkbKeyNameRec ¶

    XkbKeyNameRec :: struct {
    	name: [4]i8,
    }

    XkbKeyRec ¶

    XkbKeyRec :: struct {
    	name:      XkbKeyNameRec,
    	gap:       i16,
    	shape_ndx: u8,
    	color_ndx: u8,
    }

    XkbKeyTypeRec ¶

    XkbKeyTypeRec :: struct {
    	mod:         XkbModsRec,
    	num_levels:  u8,
    	map_count:   u8,
    	_map:        [^]XkbKTMapEntryRec,
    	preserve:    [^]XkbModsRec,
    	name:        Atom,
    	level_names: [^]Atom,
    }

    XkbLogoDoodadRec ¶

    XkbLogoDoodadRec :: struct {
    	name:      Atom,
    	type:      u8,
    	priority:  u8,
    	top:       i16,
    	left:      i16,
    	angle:     i16,
    	color_ndx: u16,
    	shape_ndx: u16,
    	logo_name: cstring,
    }

    XkbMapNotifyEvent ¶

    XkbMapNotifyEvent :: struct {
    	type:               i32,
    	serial:             u64,
    	send_event:         b32,
    	display:            ^Display,
    	time:               Time,
    	xkb_type:           XkbEventType,
    	device:             i32,
    	changed:            u32,
    	flags:              u32,
    	first_type:         i32,
    	num_types:          i32,
    	min_key_code:       u8,
    	max_key_code:       u8,
    	first_key_sym:      u8,
    	first_key_act:      u8,
    	first_key_behavior: u8,
    	first_key_explicit: u8,
    	first_modmap_key:   u8,
    	first_vmodmap_key:  u8,
    	num_key_syms:       i32,
    	num_key_acts:       i32,
    	num_key_behaviors:  i32,
    	num_key_explicit:   i32,
    	num_modmap_keys:    i32,
    	num_vmodmap_keys:   i32,
    	vmods:              u32,
    }

    XkbMessageAction ¶

    XkbMessageAction :: struct {
    	type:    u8,
    	flags:   u8,
    	message: [6]u8,
    }

    XkbModAction ¶

    XkbModAction :: struct {
    	type:      u8,
    	flags:     u8,
    	mask:      u8,
    	real_mods: u8,
    	vmods1:    u8,
    	vmods2:    u8,
    }

    XkbModsRec ¶

    XkbModsRec :: struct {
    	mask:      u8,
    	// effective mods 
    	real_mods: u8,
    	vmods:     u16,
    }

    XkbNamesNotifyEvent ¶

    XkbNamesNotifyEvent :: struct {
    	type:               i32,
    	serial:             u64,
    	send_event:         b32,
    	display:            ^Display,
    	time:               Time,
    	xkb_type:           XkbEventType,
    	device:             i32,
    	changed:            u32,
    	first_type:         i32,
    	num_types:          i32,
    	first_lvl:          i32,
    	num_lvls:           i32,
    	num_aliases:        i32,
    	num_radio_groups:   i32,
    	changed_vmods:      u32,
    	changed_groups:     u32,
    	changed_indicators: u32,
    	first_key:          i32,
    	num_keys:           i32,
    }

    XkbNamesRec ¶

    XkbNamesRec :: struct {
    	keycodes:        Atom,
    	geometry:        Atom,
    	symbols:         Atom,
    	types:           Atom,
    	compat:          Atom,
    	vmods:           [16]Atom,
    	indicators:      [32]Atom,
    	groups:          [4]Atom,
    	keys:            [^]XkbKeyNameRec,
    	key_aliases:     [^]XkbKeyAliasRec,
    	radio_groups:    [^]Atom,
    	phys_symbol:     Atom,
    	num_keys:        u8,
    	num_key_aliases: u8,
    	num_rg:          u16,
    }

    XkbNewKeyboardNotifyEvent ¶

    XkbNewKeyboardNotifyEvent :: struct {
    	type:             i32,
    	serial:           u64,
    	send_event:       b32,
    	display:          ^Display,
    	time:             Time,
    	xkb_type:         XkbEventType,
    	device:           i32,
    	old_device:       i32,
    	min_key_code:     i32,
    	max_key_code:     i32,
    	old_min_key_code: i32,
    	old_max_key_code: i32,
    	changed:          u32,
    	req_major:        i8,
    	req_minor:        i8,
    }

    XkbOutlineRec ¶

    XkbOutlineRec :: struct {
    	num_points:    u16,
    	sz_points:     u16,
    	corner_radius: u16,
    	points:        [^]XkbPointRec,
    }

    XkbOverlayKeyRec ¶

    XkbOverlayKeyRec :: struct {
    	over:  XkbKeyNameRec,
    	under: XkbKeyNameRec,
    }

    XkbOverlayRec ¶

    XkbOverlayRec :: struct {
    	name:          Atom,
    	section_under: ^XkbSectionRec,
    	num_rows:      u16,
    	sz_rows:       u16,
    	rows:          [^]XkbOverlayRowRec,
    	bounds:        [^]XkbBoundsRec,
    }

    XkbOverlayRowRec ¶

    XkbOverlayRowRec :: struct {
    	row_under: u16,
    	num_keys:  u16,
    	sz_keys:   u16,
    	keys:      [^]XkbOverlayKeyRec,
    }

    XkbPointRec ¶

    XkbPointRec :: struct {
    	x: i16,
    	y: i16,
    }

    XkbPropertyRec ¶

    XkbPropertyRec :: struct {
    	name:  cstring,
    	value: cstring,
    }

    XkbPtrAction ¶

    XkbPtrAction :: struct {
    	type:     u8,
    	flags:    u8,
    	high_XXX: u8,
    	low_XXX:  u8,
    	high_YYY: u8,
    	low_YYY:  u8,
    }

    XkbPtrBtnAction ¶

    XkbPtrBtnAction :: struct {
    	type:   u8,
    	flags:  u8,
    	count:  u8,
    	button: u8,
    }

    XkbPtrDfltAction ¶

    XkbPtrDfltAction :: struct {
    	type:      u8,
    	flags:     u8,
    	affect:    u8,
    	value_XXX: u8,
    }

    XkbRedirectKeyAction ¶

    XkbRedirectKeyAction :: struct {
    	type:        u8,
    	new_key:     u8,
    	mods_mask:   u8,
    	mods:        u8,
    	vmods_mask0: u8,
    	vmods_mask1: u8,
    	vmods0:      u8,
    	vmods1:      u8,
    }

    XkbRowRec ¶

    XkbRowRec :: struct {
    	top:      i16,
    	left:     i16,
    	num_keys: u16,
    	sz_keys:  u16,
    	vertical: i32,
    	keys:     [^]XkbKeyRec,
    	bounds:   XkbBoundsRec,
    }

    XkbSectionRec ¶

    XkbSectionRec :: struct {
    	name:         Atom,
    	priority:     u8,
    	top:          i16,
    	left:         i16,
    	width:        u16,
    	height:       u16,
    	angle:        i16,
    	num_rows:     u16,
    	num_doodads:  u16,
    	num_overlays: u16,
    	sz_rows:      u16,
    	sz_doodads:   u16,
    	sz_overlays:  u16,
    	rows:         [^]XkbRowRec,
    	doodads:      [^]XkbDoodadRec,
    	bounds:       XkbBoundsRec,
    	overlays:     [^]XkbOverlayRec,
    }

    XkbServerMapRec ¶

    XkbServerMapRec :: struct {
    	num_acts:  u16,
    	size_acts: u16,
    	acts:      [^]XkbAction,
    	behaviors: [^]XkbBehavior,
    	key_acts:  [^]u16,
    	explicit:  [^]u8,
    	vmods:     [16]u8,
    	vmodmap:   [^]u16,
    }

    XkbShapeDoodadRec ¶

    XkbShapeDoodadRec :: struct {
    	name:      Atom,
    	type:      u8,
    	priority:  u8,
    	top:       i16,
    	left:      i16,
    	angle:     i16,
    	color_ndx: u16,
    	shape_ndx: u16,
    }

    XkbShapeRec ¶

    XkbShapeRec :: struct {
    	name:         Atom,
    	num_outlines: u16,
    	sz_outlines:  u16,
    	outlines:     [^]XkbOutlineRec,
    	approx:       ^XkbOutlineRec,
    	primary:      ^XkbOutlineRec,
    	bounds:       XkbBoundsRec,
    }

    XkbStateNotifyEvent ¶

    XkbStateNotifyEvent :: struct {
    	type:               i32,
    	serial:             u64,
    	send_event:         b32,
    	display:            ^Display,
    	time:               Time,
    	xkb_type:           XkbEventType,
    	device:             i32,
    	changed:            u32,
    	group:              i32,
    	base_group:         i32,
    	latched_group:      i32,
    	locked_group:       i32,
    	mods:               u32,
    	base_mods:          u32,
    	latched_mods:       u32,
    	locked_mods:        u32,
    	compat_state:       i32,
    	grab_mods:          u8,
    	compat_grab_mods:   u8,
    	lookup_mods:        u8,
    	compat_lookup_mods: u8,
    	ptr_buttons:        i32,
    	keycode:            u8,
    	event_type:         i8,
    	// should be EventType but needs to be i8 instead of i32
    	req_major:          i8,
    	req_minor:          i8,
    }

    XkbStatePtr ¶

    XkbStatePtr :: ^XkbStateRec
    Related Procedures With Parameters

    XkbStateRec ¶

    XkbStateRec :: struct {
    	group:              u8,
    	locked_group:       u8,
    	base_group:         u16,
    	latched_group:      u16,
    	mods:               u8,
    	base_mods:          u8,
    	latched_mods:       u8,
    	locked_mods:        u8,
    	compat_state:       u8,
    	grab_mods:          u8,
    	compat_grab_mods:   u8,
    	lookup_mods:        u8,
    	compat_lookup_mods: u8,
    	ptr_buttons:        u16,
    }
    Related Procedures With Parameters

    XkbSwitchScreenAction ¶

    XkbSwitchScreenAction :: struct {
    	type:      u8,
    	flags:     u8,
    	screenXXX: i8,
    }

    XkbSymInterpretRec ¶

    XkbSymInterpretRec :: struct {
    	sym:         XID,
    	// KeySym
    	flags:       u8,
    	match:       u8,
    	mods:        u8,
    	virtual_mod: u8,
    	act:         XkbAnyAction,
    }

    XkbSymMapRec ¶

    XkbSymMapRec :: struct {
    	kt_index:   [4]u8,
    	group_info: u8,
    	width:      u8,
    	offset:     u16,
    }

    XkbTextDoodadRec ¶

    XkbTextDoodadRec :: struct {
    	name:      Atom,
    	type:      u8,
    	priority:  u8,
    	top:       i16,
    	left:      i16,
    	angle:     i16,
    	color_ndx: u16,
    	text:      cstring,
    	font:      cstring,
    }

    XmbTextItem ¶

    XmbTextItem :: struct {
    	chars:    [^]u8,
    	nchars:   i32,
    	delta:    i32,
    	font_set: XOC,
    }

    XrmBinding ¶

    XrmBinding :: enum i32 {
    	XrmBindTightly, 
    	XrmBindLoosely, 
    }

    XrmBindingList ¶

    XrmBindingList :: [^]XrmBinding

    XrmClass ¶

    XrmClass :: i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmClassList ¶

    XrmClassList :: [^]i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmDatabase ¶

    XrmDatabase :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmHashBucket ¶

    XrmHashBucket :: distinct rawptr
    Related Procedures With Parameters

    XrmName ¶

    XrmName :: i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmNameList ¶

    XrmNameList :: [^]i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmOptionDescRec ¶

    XrmOptionDescRec :: struct {
    	option:    cstring,
    	specifier: cstring,
    	argKind:   XrmOptionKind,
    	value:     rawptr,
    }

    XrmOptionKind ¶

    XrmOptionKind :: enum int {
    	XrmoptionNoArg, 
    	XrmoptionIsArg, 
    	XrmoptionStickyArg, 
    	XrmoptionSepArg, 
    	XrmoptionResArg, 
    	XrmoptionSkipArg, 
    	XrmoptionSkipLine, 
    	XrmoptionSkipNArgs, 
    }

    XrmQuark ¶

    XrmQuark :: i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmQuarkList ¶

    XrmQuarkList :: [^]i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmRepresentation ¶

    XrmRepresentation :: i32
    Related Procedures With Parameters
    Related Procedures With Returns

    XrmSearchList ¶

    XrmSearchList :: [^][^]XrmHashBucket

    XrmValue ¶

    XrmValue :: struct {
    	size: u32,
    	addr: rawptr,
    }
    Related Procedures With Parameters

    XrmValuePtr ¶

    XrmValuePtr :: [^]XrmValue

    XwcTextItem ¶

    XwcTextItem :: struct {
    	chars:    [^]rune,
    	nchars:   i32,
    	delta:    i32,
    	font_set: XOC,
    }

    Constants

    AllHints ¶

    AllHints: bit_set[WMHintsBits; uint] : WMHints{.InputHint, .StateHint, .IconPixmapHint, .IconWindowHint, .IconPositionHint, .IconMaskHint, .WindowGroupHint}

    AllTemporary ¶

    AllTemporary :: 0

    AnyButton ¶

    AnyButton :: 0

    AnyKey ¶

    AnyKey :: 0

    AnyPropertyType ¶

    AnyPropertyType :: 0

    CopyFromParent ¶

    CopyFromParent :: 0

    CurrentTime ¶

    CurrentTime :: 0

    IS_SUPPORTED ¶

    IS_SUPPORTED :: ODIN_OS == .Linux || ODIN_OS == .FreeBSD || ODIN_OS == .OpenBSD
     

    Value, specifying whether vendor:x11/xlib is available on the current platform.

    InputFocus ¶

    InputFocus :: 1

    NoSymbol ¶

    NoSymbol :: 0

    None ¶

    None :: 0

    ParentRelative ¶

    ParentRelative :: 1

    PointerRoot ¶

    PointerRoot :: 1

    PointerWindow ¶

    PointerWindow :: 0

    PropModeAppend ¶

    PropModeAppend :: 2

    PropModePrepend ¶

    PropModePrepend :: 1

    PropModeReplace ¶

    PropModeReplace :: 0

    VisualAllMask ¶

    VisualAllMask: bit_set[VisualInfoMaskBits; int] : VisualInfoMask{.VisualIDMask, .VisualScreenMask, .VisualDepthMask, .VisualClassMask, .VisualRedMaskMask, .VisualGreenMaskMask, .VisualBlueMaskMask, .VisualColormapSizeMask, .VisualBitsPerRGBMask}

    VisualNoMask ¶

    VisualNoMask: bit_set[VisualInfoMaskBits; int] : VisualInfoMask{}

    XA_ATOM ¶

    XA_ATOM :: Atom(4)

    XA_CARDINAL ¶

    XA_CARDINAL :: Atom(6)

    XA_INTEGER ¶

    XA_INTEGER :: Atom(19)

    XA_WM_CLASS ¶

    XA_WM_CLASS :: Atom(67)

    XA_WM_CLIENT_MACHINE ¶

    XA_WM_CLIENT_MACHINE :: Atom(36)

    XA_WM_COMMAND ¶

    XA_WM_COMMAND :: Atom(34)

    XA_WM_HINTS ¶

    XA_WM_HINTS :: Atom(35)

    XA_WM_ICON_NAME ¶

    XA_WM_ICON_NAME :: Atom(37)

    XA_WM_ICON_SIZE ¶

    XA_WM_ICON_SIZE :: Atom(38)

    XA_WM_NAME ¶

    XA_WM_NAME :: Atom(39)

    XA_WM_NORMAL_HINTS ¶

    XA_WM_NORMAL_HINTS :: Atom(40)

    XA_WM_SIZE_HINTS ¶

    XA_WM_SIZE_HINTS :: Atom(41)

    XA_WM_TRANSIENT_FOR ¶

    XA_WM_TRANSIENT_FOR :: Atom(68)

    XA_WM_ZOOM_HINTS ¶

    XA_WM_ZOOM_HINTS :: Atom(42)

    XIAllDevices ¶

    XIAllDevices :: 0

    XIAllMasterDevices ¶

    XIAllMasterDevices :: 1

    XIMPreeditNothing ¶

    XIMPreeditNothing :: 0x0008

    XIMStatusNothing ¶

    XIMStatusNothing :: 0x0400

    XNClientWindow ¶

    XNClientWindow: cstring : "clientWindow"

    XNFocusWindow ¶

    XNFocusWindow: cstring : "focusWindow"

    XNInputStyle ¶

    XNInputStyle: cstring : "inputStyle"

    XNPreeditAttributes ¶

    XNPreeditAttributes: cstring : "preeditAttributes"

    XNSpotLocation ¶

    XNSpotLocation: cstring : "spotLocation"

    XkbActionMessageLength ¶

    XkbActionMessageLength :: 6

    XkbAllClientInfoMask ¶

    XkbAllClientInfoMask: bit_set[XkbInfoMaskBits; int] : XkbInfoMask{.KeyTypes, .KeySyms, .ModifierMap}

    XkbAllEventsMask ¶

    XkbAllEventsMask: bit_set[XkbEventType; int] : XkbEventMask{.NewKeyboardNotify, .MapNotify, .StateNotify, .ControlsNotify, .IndicatorStateNotify, .IndicatorMapNotify, .NamesNotify, .CompatMapNotify, .BellNotify, .ActionMessage, .AccessXNotify, .ExtensionDeviceNotify}

    XkbAllServerInfoMask ¶

    XkbAllServerInfoMask: bit_set[XkbInfoMaskBits; int] : XkbInfoMask{.ExplicitComponents, .KeyActions, .KeyBehaviors, .VirtualMods, .VirtualModMap}

    XkbAnyActionDataSize ¶

    XkbAnyActionDataSize :: 7

    XkbKeyNameLength ¶

    XkbKeyNameLength :: 4

    XkbMaxKeyCount ¶

    XkbMaxKeyCount :: XkbMaxLegalKeyCode - XkbMinLegalKeyCode + 1

    XkbMaxLegalKeyCode ¶

    XkbMaxLegalKeyCode :: 255

    XkbMinLegalKeyCode ¶

    XkbMinLegalKeyCode :: 8

    XkbNumIndicators ¶

    XkbNumIndicators :: 32

    XkbNumKbdGroups ¶

    XkbNumKbdGroups :: 4

    XkbNumVirtualMods ¶

    XkbNumVirtualMods :: 16

    XkbPerKeyBitArraySize ¶

    XkbPerKeyBitArraySize :: (XkbMaxLegalKeyCode + 1) / 8

    XkbUseCoreKbd ¶

    XkbUseCoreKbd :: 0x0100

    Variables

    This section is empty.

    Procedures

    ActivateScreenSaver ¶

    ActivateScreenSaver :: proc "c" (display: ^Display) ---

    AddConnectionWatch ¶

    AddConnectionWatch :: proc "c" (display: ^Display, procedure: XConnectionWatchProc, data: rawptr) -> Status ---
     

    Internal connections

    AddHost ¶

    AddHost :: proc "c" (display: ^Display, addr: ^XHostAddress) ---
     

    Controlling host address

    AddHosts ¶

    AddHosts :: proc "c" (display: ^Display, hosts: [^]XHostAddress, nhosts: i32) ---

    AddPixel ¶

    AddPixel :: proc "c" (image: ^XImage, value: int) ---

    AddToSaveSet ¶

    AddToSaveSet :: proc "c" (display: ^Display, window: XID) ---

    AllocClassHint ¶

    AllocClassHint :: proc "c" () -> ^XClassHint ---
     

    Setting and reading the WM_CLASS property

    AllocColor ¶

    AllocColor :: proc "c" (display: ^Display, colormap: XID, screen: ^XColor) -> Status ---
     

    Allocating and freeing color cells

    AllocColorCells ¶

    AllocColorCells :: proc "c" (
    	display:  ^Display, 
    	colormap: XID, 
    	contig:   b32, 
    	pmasks:   [^]uint, 
    	np:       u32, 
    	pixels:   [^]uint, 
    	npixels:  u32, 
    ) -> Status ---

    AllocColorPlanes ¶

    AllocColorPlanes :: proc "c" (
    	display:  ^Display, 
    	colormap: XID, 
    	contig:   b32, 
    	pixels:   [^]uint, 
    	ncolors:  i32, 
    	nreds:    i32, 
    	ngreens:  i32, 
    	nblues:   i32, 
    	rmask:    [^]uint, 
    	gmask:    [^]uint, 
    	bmask:    [^]uint, 
    ) -> Status ---

    AllocIconSize ¶

    AllocIconSize :: proc "c" () -> ^XIconSize ---
     

    Setting and reading the WM_ICON_SIZE_PROPERTY

    AllocNamedColor ¶

    AllocNamedColor :: proc "c" (display: ^Display, colormap: XID, name: cstring, screen: ^XColor, exact: ^XColor) -> Status ---

    AllocSizeHints ¶

    AllocSizeHints :: proc "c" () -> ^XSizeHints ---
     

    Setting and reading WM_NORMAL_HINTS property

    AllocWMHints ¶

    AllocWMHints :: proc "c" () -> ^XWMHints ---
     

    Setting and reading WM_HINTS property

    AllowEvents ¶

    AllowEvents :: proc "c" (display: ^Display, evend_mode: AllowEventsMode, time: Time) ---
     

    Resuming event processing

    AutoRepeatOff ¶

    AutoRepeatOff :: proc "c" (display: ^Display) ---

    AutoRepeatOn ¶

    AutoRepeatOn :: proc "c" (display: ^Display) ---

    Bell ¶

    Bell :: proc "c" (display: ^Display, percent: i32) ---

    BitmapBitOrder ¶

    BitmapBitOrder :: proc "c" (display: ^Display) -> ByteOrder ---

    BitmapPad ¶

    BitmapPad :: proc "c" (display: ^Display) -> i32 ---

    BitmapUnit ¶

    BitmapUnit :: proc "c" (display: ^Display) -> i32 ---

    BlackPixel ¶

    BlackPixel :: proc "c" (display: ^Display, screen_no: i32) -> uint ---
     

    Display macros (display properties)

    BlackPixelsOfScreen ¶

    BlackPixelsOfScreen :: proc "c" (screen: ^Screen) -> uint ---
     

    Screen macros

    CellsOfScreen ¶

    CellsOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    ChangeActivePointerGrab ¶

    ChangeActivePointerGrab :: proc "c" (display: ^Display, event_mask: bit_set[EventMaskBits; int], cursor: XID, time: Time) ---

    ChangeGC ¶

    ChangeGC :: proc "c" (display: ^Display, gc: GC, mask: bit_set[GCAttributeMaskBits; uint], values: ^XGCValues) ---

    ChangeKeyboardControl ¶

    ChangeKeyboardControl :: proc "c" (display: ^Display, mask: bit_set[KeyboardControlMaskBits; int], values: ^XKeyboardControl) ---
     

    Manipulating the keyboard and pointer settings

    ChangeKeyboardMapping ¶

    ChangeKeyboardMapping :: proc "c" (display: ^Display, first: u8, keysyms_per: i32, keysyms: [^]KeySym, num_codes: i32) ---

    ChangePointerControl ¶

    ChangePointerControl :: proc "c" (
    	display:           ^Display, 
    	do_accel:          b32, 
    	do_threshold:      b32, 
    	accel_numerator:   i32, 
    	accel_denominator: i32, 
    	threshold:         i32, 
    ) ---

    ChangeProperty ¶

    ChangeProperty :: proc "c" (
    	display:  ^Display, 
    	window:   XID, 
    	property: Atom, 
    	type:     Atom, 
    	format:   i32, 
    	mode:     i32, 
    	data:     rawptr, 
    	count:    i32, 
    ) -> i32 ---

    ChangeSaveSet ¶

    ChangeSaveSet :: proc "c" (display: ^Display, window: XID, mode: SaveSetChangeMode) ---

    ChangeWindowAttributes ¶

    ChangeWindowAttributes :: proc "c" (display: ^Display, window: XID, attr_mask: bit_set[WindowAttributeMaskBits; int], attr: ^XSetWindowAttributes) ---
     

    Window: changing attributes

    CheckIfEvent ¶

    CheckIfEvent :: proc "c" (display: ^Display, event: ^XEvent, predicate: proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, arg: rawptr) -> b32 ---

    CheckMaskEvent ¶

    CheckMaskEvent :: proc "c" (display: ^Display, mask: bit_set[EventMaskBits; int], event: ^XEvent) -> b32 ---

    CheckTypedEvent ¶

    CheckTypedEvent :: proc "c" (display: ^Display, type: EventType, event: ^XEvent) -> b32 ---

    CheckTypedWindowEvent ¶

    CheckTypedWindowEvent :: proc "c" (display: ^Display, window: XID, type: EventType, event: ^XEvent) -> b32 ---

    CheckWindowEvent ¶

    CheckWindowEvent :: proc "c" (display: ^Display, window: XID, mask: bit_set[EventMaskBits; int], event: ^XEvent) -> b32 ---

    CirculateSubwindows ¶

    CirculateSubwindows :: proc "c" (display: ^Display, window: XID, direction: CirculationDirection) ---

    CirculateSubwindowsDown ¶

    CirculateSubwindowsDown :: proc "c" (display: ^Display, window: XID) ---

    CirculateSubwindowsUp ¶

    CirculateSubwindowsUp :: proc "c" (display: ^Display, window: XID) ---

    ClearArea ¶

    ClearArea :: proc "c" (
    	display: ^Display, 
    	window:  XID, 
    	x:       i32, 
    	y:       i32, 
    	width:   u32, 
    	height:  u32, 
    	exp:     b32, 
    ) ---
     

    Graphics functions

    ClearWindow ¶

    ClearWindow :: proc "c" (display: ^Display, window: XID) ---

    ClipBox ¶

    ClipBox :: proc "c" (region: Region, rect: ^XRectangle) ---
     

    Computing with regions

    CloseDisplay ¶

    CloseDisplay :: proc "c" (display: ^Display) ---

    ConfigureWindow ¶

    ConfigureWindow :: proc "c" (display: ^Display, window: XID, mask: bit_set[WindowChangesMaskBits; i32], changes: ^XWindowChanges) -> i32 ---
     

    Windows: configuring

    ConnectionNumber ¶

    ConnectionNumber :: proc "c" (display: ^Display) -> i32 ---
     

    Display macros (connection)

    ConvertCase ¶

    ConvertCase :: proc "c" (keysym: KeySym, lower: ^KeySym, upper: ^KeySym) ---

    ConvertSelection ¶

    ConvertSelection :: proc "c" (
    	display:   ^Display, 
    	selection: Atom, 
    	target:    Atom, 
    	property:  Atom, 
    	requestor: XID, 
    	time:      Time, 
    ) ---

    CopyArea ¶

    CopyArea :: proc "c" (
    	display: ^Display, 
    	src:     XID, 
    	dst:     XID, 
    	gc:      GC, 
    	src_x:   i32, 
    	src_y:   i32, 
    	width:   u32, 
    	height:  u32, 
    	dst_x:   i32, 
    	dst_y:   i32, 
    ) ---

    CopyColormapAndFree ¶

    CopyColormapAndFree :: proc "c" (display: ^Display, colormap: XID) -> XID ---

    CopyGC ¶

    CopyGC :: proc "c" (display: ^Display, src: GC, dst: GC, mask: bit_set[GCAttributeMaskBits; uint]) ---

    CopyPlane ¶

    CopyPlane :: proc "c" (
    	display: ^Display, 
    	src:     XID, 
    	dst:     XID, 
    	gc:      GC, 
    	src_x:   i32, 
    	src_y:   i32, 
    	width:   u32, 
    	height:  u32, 
    	dst_x:   i32, 
    	dst_y:   i32, 
    	plane:   uint, 
    ) ---

    CreateColormap ¶

    CreateColormap :: proc "c" (display: ^Display, window: XID, visual: ^Visual, alloc: ColormapAlloc) -> XID ---
     

    Creation/destruction of colormaps

    CreateFontCursor ¶

    CreateFontCursor :: proc "c" (display: ^Display, shape: CursorShape) -> XID ---
     

    Creating recoloring and freeing cursors

    CreateGC ¶

    CreateGC :: proc "c" (display: ^Display, drawable: XID, mask: bit_set[GCAttributeMaskBits; uint], attr: ^XGCValues) -> GC ---
     

    Graphics context functions

    CreateGlyphCursor ¶

    CreateGlyphCursor :: proc "c" (
    	display:   ^Display, 
    	src_font:  XID, 
    	mask_font: XID, 
    	src_char:  u32, 
    	mask_char: u32, 
    	fg:        ^XColor, 
    	bg:        ^XColor, 
    ) -> XID ---

    CreateIC ¶

    CreateIC :: proc "c" (im: XIM, args: ..any) -> XIC ---

    CreateImage ¶

    CreateImage :: proc "c" (
    	display: ^Display, 
    	visual:  ^Visual, 
    	depth:   u32, 
    	format:  ImageFormat, 
    	offset:  i32, 
    	data:    rawptr, 
    	width:   u32, 
    	height:  u32, 
    	pad:     i32, 
    	stride:  i32, 
    ) -> ^XImage ---
     

    Manipulating images

    CreatePixmap ¶

    CreatePixmap :: proc "c" (display: ^Display, drawable: XID, width: u32, height: u32, depth: u32) -> XID ---
     

    Creating and freeing pixmaps

    CreatePixmapCursor ¶

    CreatePixmapCursor :: proc "c" (
    	display: ^Display, 
    	source:  XID, 
    	mask:    XID, 
    	fg:      XColor, 
    	bg:      ^XColor, 
    	x:       u32, 
    	y:       u32, 
    ) -> XID ---

    CreateRegion ¶

    CreateRegion :: proc "c" () -> Region ---
     

    Creating, copying and destroying regions

    CreateSimpleWindow ¶

    CreateSimpleWindow :: proc "c" (
    	display:  ^Display, 
    	parent:   XID, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    	bordersz: u32, 
    	border:   uint, 
    	bg:       uint, 
    ) -> XID ---

    CreateWindow ¶

    CreateWindow :: proc "c" (
    	display:   ^Display, 
    	parent:    XID, 
    	x:         i32, 
    	y:         i32, 
    	width:     u32, 
    	height:    u32, 
    	bordersz:  u32, 
    	depth:     i32, 
    	class:     WindowClass, 
    	visual:    ^Visual, 
    	attr_mask: bit_set[WindowAttributeMaskBits; int], 
    	attr:      ^XSetWindowAttributes, 
    ) -> XID ---
     

    Windows: creation/destruction

    DefaultColormap ¶

    DefaultColormap :: proc "c" (display: ^Display, screen_no: i32) -> XID ---
     

    Display macros (defaults)

    DefaultColormapOfScreen ¶

    DefaultColormapOfScreen :: proc "c" (screen: ^Screen) -> XID ---

    DefaultDepth ¶

    DefaultDepth :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DefaultDepthOfScreen ¶

    DefaultDepthOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    DefaultGC ¶

    DefaultGC :: proc "c" (display: ^Display, screen_no: i32) -> GC ---

    DefaultGCOfScreen ¶

    DefaultGCOfScreen :: proc "c" (screen: ^Screen) -> GC ---

    DefaultRootWindow ¶

    DefaultRootWindow :: proc "c" (display: ^Display) -> XID ---

    DefaultScreen ¶

    DefaultScreen :: proc "c" (display: ^Display) -> i32 ---

    DefaultScreenOfDisplay ¶

    DefaultScreenOfDisplay :: proc "c" (display: ^Display) -> ^Screen ---

    DefaultVisual ¶

    DefaultVisual :: proc "c" (display: ^Display, screen_no: i32) -> ^Visual ---

    DefaultVisualOfScreen ¶

    DefaultVisualOfScreen :: proc "c" (screen: ^Screen) -> ^Visual ---

    DefineCursor ¶

    DefineCursor :: proc "c" (display: ^Display, window: XID, cursor: XID) -> i32 ---

    DeleteModifiermapEntry ¶

    DeleteModifiermapEntry :: proc "c" (modmap: ^XModifierKeymap, keycode_entry: u8, modifier: i32) -> ^XModifierKeymap ---

    DeleteProperty ¶

    DeleteProperty :: proc "c" (display: ^Display, window: XID, prop: Atom) -> i32 ---

    DestroyImage ¶

    DestroyImage :: proc "c" (image: ^XImage) ---

    DestroyRegion ¶

    DestroyRegion :: proc "c" (r: Region) ---

    DestroySubwindows ¶

    DestroySubwindows :: proc "c" (display: ^Display, window: XID) ---

    DestroyWindow ¶

    DestroyWindow :: proc "c" (display: ^Display, window: XID) ---

    DisableAccessControl ¶

    DisableAccessControl :: proc "c" (display: ^Display) ---

    DisplayCells ¶

    DisplayCells :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DisplayHeight ¶

    DisplayHeight :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DisplayHeightMM ¶

    DisplayHeightMM :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DisplayKeycodes ¶

    DisplayKeycodes :: proc "c" (display: ^Display, min_keycodes: ^i32, max_keycodes: ^i32) ---
     

    Manipulating the keyboard encoding

    DisplayMotionBufferSize ¶

    DisplayMotionBufferSize :: proc "c" (display: ^Display) -> uint ---
     

    Getting the history of pointer motion

    DisplayName ¶

    DisplayName :: proc "c" (string: cstring) -> cstring ---

    DisplayOfScreen ¶

    DisplayOfScreen :: proc "c" (screen: ^Screen) -> ^Display ---

    DisplayPlanes ¶

    DisplayPlanes :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DisplayString ¶

    DisplayString :: proc "c" (display: ^Display) -> cstring ---

    DisplayWidth ¶

    DisplayWidth :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DisplayWidthMM ¶

    DisplayWidthMM :: proc "c" (display: ^Display, screen_no: i32) -> i32 ---

    DoesBackingStore ¶

    DoesBackingStore :: proc "c" (screen: ^Screen) -> BackingStore ---

    DoesSaveUnders ¶

    DoesSaveUnders :: proc "c" (screen: ^Screen) -> b32 ---

    DrawArc ¶

    DrawArc :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    	angle1:   i32, 
    	angle2:   i32, 
    ) ---

    DrawArcs ¶

    DrawArcs :: proc "c" (display: ^Display, drawable: XID, gc: GC, arcs: [^]XArc, narcs: i32) ---

    DrawImageString ¶

    DrawImageString :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	string:   [^]u8, 
    	length:   i32, 
    ) ---

    DrawImageString16 ¶

    DrawImageString16 :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	string:   [^]XChar2b, 
    	length:   i32, 
    ) ---

    DrawLine ¶

    DrawLine :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x1:       i32, 
    	y1:       i32, 
    	x2:       i32, 
    	y2:       i32, 
    ) ---

    DrawLines ¶

    DrawLines :: proc "c" (display: ^Display, drawable: XID, gc: GC, points: [^]XPoint, npoints: i32) ---

    DrawPoint ¶

    DrawPoint :: proc "c" (display: ^Display, drawable: XID, gc: GC, x: i32, y: i32) ---
     

    Drawing lines, points, rectangles and arc

    DrawPoints ¶

    DrawPoints :: proc "c" (
    	display:  Display, 
    	drawable: XID, 
    	gc:       GC, 
    	point:    [^]XPoint, 
    	npoints:  i32, 
    	mode:     CoordMode, 
    ) ---

    DrawRectangle ¶

    DrawRectangle :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    ) ---

    DrawRectangles ¶

    DrawRectangles :: proc "c" (display: ^Display, drawable: XID, gc: GC, rects: [^]XRectangle, nrects: i32) ---

    DrawSegments ¶

    DrawSegments :: proc "c" (display: ^Display, drawable: XID, gc: GC, segs: [^]XSegment, nsegs: i32) ---

    DrawString ¶

    DrawString :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	string:   [^]u8, 
    	length:   i32, 
    ) ---
     

    Drawing text characters

    DrawString16 ¶

    DrawString16 :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	string:   [^]XChar2b, 
    	length:   i32, 
    ) ---

    DrawText ¶

    DrawText :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	items:    XTextItem, 
    	nitems:   i32, 
    ) ---
     

    Drawing complex text

    DrawText16 ¶

    DrawText16 :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	items:    XTextItem16, 
    	nitems:   i32, 
    ) ---

    EmptyRegion ¶

    EmptyRegion :: proc "c" (reg: Region) -> b32 ---

    EnableAccessControl ¶

    EnableAccessControl :: proc "c" (display: ^Display) ---

    EqualRegion ¶

    EqualRegion :: proc "c" (a, b: Region) -> b32 ---

    EventMaskOfScreen ¶

    EventMaskOfScreen :: proc "c" (screen: ^Screen) -> bit_set[EventMaskBits; int] ---

    EventsQueued ¶

    EventsQueued :: proc "c" (display: ^Display, mode: EventQueueMode) -> i32 ---

    ExtendedMaxRequestSize ¶

    ExtendedMaxRequestSize :: proc "c" (display: ^Display) -> int ---

    FetchBuffer ¶

    FetchBuffer :: proc "c" (display: ^Display, nbytes: ^i32, buffer: i32) -> [^]u8 ---

    FetchBytes ¶

    FetchBytes :: proc "c" (display: ^Display, nbytes: ^i32) -> [^]u8 ---

    FetchName ¶

    FetchName :: proc "c" (display: ^Display, window: XID, name: ^cstring) -> Status ---

    FillArc ¶

    FillArc :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    	angle1:   i32, 
    	angle2:   i32, 
    ) ---

    FillArcs ¶

    FillArcs :: proc "c" (display: ^Display, drawable: XID, gc: GC, arcs: [^]XArc, narcs: i32) ---

    FillPolygon ¶

    FillPolygon :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	points:   [^]XPoint, 
    	npoints:  i32, 
    	shape:    Shape, 
    	mode:     CoordMode, 
    ) ---

    FillRectangle ¶

    FillRectangle :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    ) ---
     

    Filling areas

    FillRectangles ¶

    FillRectangles :: proc "c" (display: ^Display, drawable: XID, gc: GC, rects: [^]XRectangle, nrects: i32) ---

    FilterEvent ¶

    FilterEvent :: proc "c" (event: ^XEvent, window: XID) -> b32 ---

    Flush ¶

    Flush :: proc "c" (display: ^Display) -> i32 ---

    FlushGC ¶

    FlushGC :: proc "c" (display: ^Display, gc: GC) ---

    ForceScreenSaver ¶

    ForceScreenSaver :: proc "c" (display: ^Display, mode: ScreenSaverForceMode) ---

    Free ¶

    Free :: proc "c" (ptr: rawptr) ---
     

    Free data allocated by Xlib

    FreeColormap ¶

    FreeColormap :: proc "c" (display: ^Display, colormap: XID) ---

    FreeColors ¶

    FreeColors :: proc "c" (display: ^Display, colormap: XID, pixels: [^]uint, npixels: i32, planes: uint) ---

    FreeCursor ¶

    FreeCursor :: proc "c" (display: ^Display, cursor: XID) ---

    FreeEventData ¶

    FreeEventData :: proc "c" (display: ^Display, cookie: ^XGenericEventCookie) ---

    FreeFont ¶

    FreeFont :: proc "c" (display: ^Display, font_struct: ^XFontStruct) ---

    FreeFontInfo ¶

    FreeFontInfo :: proc "c" (names: [^]cstring, info: [^]XFontStruct, count: i32) ---

    FreeFontNames ¶

    FreeFontNames :: proc "c" (display: ^Display, list: [^]cstring) ---

    FreeFontPath ¶

    FreeFontPath :: proc "c" (list: [^]cstring) ---

    FreeGC ¶

    FreeGC :: proc "c" (display: ^Display, gc: GC) ---

    FreeModifiermap ¶

    FreeModifiermap :: proc "c" (modmap: ^XModifierKeymap) ---

    FreePixmap ¶

    FreePixmap :: proc "c" (display: ^Display, pixmap: XID) ---

    GCContextFromGC ¶

    GCContextFromGC :: proc "c" (gc: GC) -> XID ---

    GetAtomName ¶

    GetAtomName :: proc "c" (display: ^Display, atom: Atom) -> cstring ---

    GetAtomNames ¶

    GetAtomNames :: proc "c" (display: ^Display, atoms: [^]Atom, count: i32, names: [^]cstring) -> Status ---

    GetClassHint ¶

    GetClassHint :: proc "c" (display: ^Display, window: XID, hint: ^XClassHint) -> Status ---

    GetCommand ¶

    GetCommand :: proc "c" (display: ^Display, window: XID, argv: ^[^]cstring, argc: ^i32) -> Status ---

    GetErrorDatabaseText ¶

    GetErrorDatabaseText :: proc "c" (
    	display:        ^Display, 
    	name:           cstring, 
    	message:        cstring, 
    	default_string: cstring, 
    	buffer:         [^]u8, 
    	size:           i32, 
    ) ---

    GetErrorText ¶

    GetErrorText :: proc "c" (display: ^Display, code: i32, buffer: [^]u8, size: i32) ---

    GetEventData ¶

    GetEventData :: proc "c" (display: ^Display, cookie: ^XGenericEventCookie) -> b32 ---

    GetFontPath ¶

    GetFontPath :: proc "c" (display: ^Display, npaths: ^i32) -> [^]cstring ---

    GetFontProperty ¶

    GetFontProperty :: proc "c" (font_struct: ^XFontStruct, atom: Atom, ret: ^uint) -> b32 ---

    GetGCValues ¶

    GetGCValues :: proc "c" (display: ^Display, gc: GC, mask: bit_set[GCAttributeMaskBits; uint], values: ^XGCValues) -> Status ---

    GetGeometry ¶

    GetGeometry :: proc "c" (
    	display:   ^Display, 
    	drawable:  XID, 
    	root:      ^XID, 
    	x:         ^i32, 
    	y:         ^i32, 
    	width:     ^u32, 
    	height:    ^u32, 
    	border_sz: ^u32, 
    	depth:     ^u32, 
    ) -> Status ---

    GetIconName ¶

    GetIconName :: proc "c" (display: ^Display, window: XID, prop: ^cstring) -> Status ---

    GetIconSizes ¶

    GetIconSizes :: proc "c" (display: ^Display, window: XID, size_list: ^[^]XIconSize, count: ^i32) -> Status ---

    GetImage ¶

    GetImage :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	x:        i32, 
    	y:        i32, 
    	width:    u32, 
    	height:   u32, 
    	mask:     uint, 
    	format:   ImageFormat, 
    ) -> ^XImage ---

    GetInputFocus ¶

    GetInputFocus :: proc "c" (display: ^Display, focus: ^XID, revert_to: ^FocusRevert) ---

    GetKeyboardControl ¶

    GetKeyboardControl :: proc "c" (display: ^Display, values: ^XKeyboardState) ---

    GetKeyboardMapping ¶

    GetKeyboardMapping :: proc "c" (display: ^Display, first: u8, count: i32, keysyms_per: ^i32) -> ^KeySym ---

    GetModifierMapping ¶

    GetModifierMapping :: proc "c" (display: ^Display) -> ^XModifierKeymap ---

    GetMotionEvents ¶

    GetMotionEvents :: proc "c" (display: ^Display, window: XID, start: Time, stop: Time, nevents: ^i32) -> [^]XTimeCoord ---

    GetPixel ¶

    GetPixel :: proc "c" (image: ^XImage, x: i32, y: i32) -> uint ---

    GetPointerControl ¶

    GetPointerControl :: proc "c" (display: ^Display, accel_numerator: ^i32, accel_denominator: ^i32, threshold: ^i32) ---

    GetPointerMapping ¶

    GetPointerMapping :: proc "c" (display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 ---

    GetRGBColormaps ¶

    GetRGBColormaps :: proc "c" (display: ^Display, window: XID, colormap: ^[^]XStandardColormap, count: ^i32, prop: Atom) -> Status ---

    GetScreenSaver ¶

    GetScreenSaver :: proc "c" (display: ^Display, timeout: ^i32, interval: ^i32, blanking: ^ScreenSaverBlanking, exposures: ^ScreenSavingExposures) ---

    GetSelectionOwner ¶

    GetSelectionOwner :: proc "c" (display: ^Display, selection: Atom) -> XID ---

    GetSubImage ¶

    GetSubImage :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	src_x:    i32, 
    	src_y:    i32, 
    	width:    u32, 
    	height:   u32, 
    	mask:     uint, 
    	format:   ImageFormat, 
    	dst:      ^XImage, 
    	dst_x:    i32, 
    	dst_y:    i32, 
    ) -> ^XImage ---

    GetTextProperty ¶

    GetTextProperty :: proc "c" (display: ^Display, window: XID, text_prop_return: ^XTextProperty, property: Atom) -> Status ---

    GetTransientForHint ¶

    GetTransientForHint :: proc "c" (display: ^Display, window: XID, prop_window: ^XID) -> Status ---

    GetVisualInfo ¶

    GetVisualInfo :: proc "c" (display: ^Display, mask: bit_set[VisualInfoMaskBits; int], info: ^XVisualInfo, nret: ^i32) -> [^]XVisualInfo ---
     

    Determining the appropriate visual types

    GetWMClientMachine ¶

    GetWMClientMachine :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) -> Status ---

    GetWMColormapWindows ¶

    GetWMColormapWindows :: proc "c" (display: ^Display, window: XID, colormap_windows: ^[^]XID, count: ^i32) -> Status ---

    GetWMHints ¶

    GetWMHints :: proc "c" (display: ^Display, window: XID) -> ^XWMHints ---

    GetWMIconName ¶

    GetWMIconName :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) -> Status ---

    GetWMName ¶

    GetWMName :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) -> Status ---

    GetWMNormalHints ¶

    GetWMNormalHints :: proc "c" (display: ^Display, window: XID, hints: ^XSizeHints, flags: ^bit_set[SizeHintsBits; int]) -> Status ---

    GetWMProtocols ¶

    GetWMProtocols :: proc "c" (display: ^Display, window: XID, protocols: ^[^]Atom, count: ^i32) -> Status ---

    GetWMSizeHints ¶

    GetWMSizeHints :: proc "c" (display: ^Display, window: XID, hints: ^XSizeHints, masks: ^bit_set[SizeHintsBits; int], prop: Atom) -> Status ---

    GetWindowAttributes ¶

    GetWindowAttributes :: proc "c" (display: ^Display, window: XID, attr: ^XWindowAttributes) -> i32 ---

    GetWindowProperty ¶

    GetWindowProperty :: proc "c" (
    	display:     ^Display, 
    	window:      XID, 
    	property:    Atom, 
    	long_offs:   int, 
    	long_len:    int, 
    	delete:      b32, 
    	req_type:    Atom, 
    	act_type:    ^Atom, 
    	act_format:  ^i32, 
    	nitems:      ^uint, 
    	bytes_after: ^uint, 
    	props:       ^rawptr, 
    ) -> i32 ---
     

    Windows: Obtaining and changing properties

    GrabButton ¶

    GrabButton :: proc "c" (
    	display:       ^Display, 
    	button:        u32, 
    	modifiers:     bit_set[InputMaskBits; i32], 
    	grab_window:   XID, 
    	owner_events:  b32, 
    	event_mask:    bit_set[EventMaskBits; int], 
    	pointer_mode:  GrabMode, 
    	keyboard_mode: GrabMode, 
    	confine_to:    XID, 
    	cursor:        XID, 
    ) ---

    GrabKey ¶

    GrabKey :: proc "c" (
    	display:       ^Display, 
    	keycode:       i32, 
    	modifiers:     bit_set[InputMaskBits; i32], 
    	grab_window:   XID, 
    	owner_events:  b32, 
    	pointer_mode:  GrabMode, 
    	keyboard_mode: GrabMode, 
    ) ---

    GrabKeyboard ¶

    GrabKeyboard :: proc "c" (
    	display:       ^Display, 
    	grab_window:   XID, 
    	owner_events:  b32, 
    	pointer_mode:  GrabMode, 
    	keyboard_mode: GrabMode, 
    	time:          Time, 
    ) -> i32 ---

    GrabPointer ¶

    GrabPointer :: proc "c" (
    	display:       ^Display, 
    	grab_window:   XID, 
    	owner_events:  b32, 
    	mask:          bit_set[EventMaskBits; int], 
    	pointer_mode:  GrabMode, 
    	keyboard_mode: GrabMode, 
    	confine_to:    XID, 
    	cursor:        XID, 
    	time:          Time, 
    ) -> i32 ---
     

    Pointer grabbing

    GrabServer ¶

    GrabServer :: proc "c" (display: ^Display) ---
     

    Grabbing the server

    HeightMMOfScreen ¶

    HeightMMOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    HeightOfScreen ¶

    HeightOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    HideCursor ¶

    HideCursor :: proc "c" (display: ^Display, window: XID) ---

    IconifyWindow ¶

    IconifyWindow :: proc "c" (dipslay: ^Display, window: XID, screen_no: i32) -> b32 ---
     

    Manipulating top-level windows

    IfEvent ¶

    IfEvent :: proc "c" (display: ^Display, event: ^XEvent, predicate: proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, ctx: rawptr) ---
     

    Selecting events using a predicate procedure

    ImageByteOrder ¶

    ImageByteOrder :: proc "c" (display: ^Display) -> ByteOrder ---

    InitImage ¶

    InitImage :: proc "c" (image: ^XImage) -> Status ---
     

    Transferring images between client and server

    InitThreads ¶

    InitThreads :: proc "c" () -> Status ---
     

    Threading functions

    InsertModifiermapEntry ¶

    InsertModifiermapEntry :: proc "c" (modmap: ^XModifierKeymap, keycode_entry: u8, modifier: i32) -> ^XModifierKeymap ---

    InstallColormap ¶

    InstallColormap :: proc "c" (display: ^Display, colormap: XID) ---
     

    Managing installed colormaps

    InternAtom ¶

    InternAtom :: proc "c" (display: ^Display, name: cstring, existing: b32) -> Atom ---
     

    Atoms

    InternAtoms ¶

    InternAtoms :: proc "c" (display: ^Display, names: [^]cstring, count: i32, only_if_exists: b32, atoms_return: [^]Atom) -> Status ---

    InternalConnectionNumbers ¶

    InternalConnectionNumbers :: proc "c" (display: ^Display, fds: ^[^]i32, count: ^i32) -> Status ---

    IntersectRegion ¶

    IntersectRegion :: proc "c" (sra, srb, ret: Region) ---

    KeycodeToKeysym ¶

    KeycodeToKeysym :: proc "c" (display: ^Display, keycode: u8, index: i32) -> KeySym ---

    KeysymToKeycode ¶

    KeysymToKeycode :: proc "c" (display: ^Display, keysym: KeySym) -> u8 ---

    KeysymToString ¶

    KeysymToString :: proc "c" (keysym: KeySym) -> cstring ---

    KillClient ¶

    KillClient :: proc "c" (display: ^Display, resource: XID) ---
     

    Killing clients

    LastKnownRequestProcessed ¶

    LastKnownRequestProcessed :: proc "c" (display: ^Display) -> uint ---

    ListDepths ¶

    ListDepths :: proc "c" (display: ^Display, screen_no: i32, count: ^i32) -> [^]i32 ---

    ListFonts ¶

    ListFonts :: proc "c" (display: ^Display, pat: cstring, max: i32, count: ^i32) -> [^]cstring ---

    ListFontsWithInfo ¶

    ListFontsWithInfo :: proc "c" (display: ^Display, pat: cstring, max: i32, count: ^i32, info: ^[^]XFontStruct) -> [^]cstring ---

    ListHosts ¶

    ListHosts :: proc "c" (display: ^Display, nhosts: ^i32, state: [^]b32) -> [^]XHostAddress ---

    ListInstalledColormaps ¶

    ListInstalledColormaps :: proc "c" (display: ^Display, window: XID, n: ^i32) -> [^]XID ---

    ListPixmapFormats ¶

    ListPixmapFormats :: proc "c" (display: ^Display, count: ^i32) -> [^]XPixmapFormatValues ---
     

    Display image format macros

    ListProperties ¶

    ListProperties :: proc "c" (display: ^Display, window: XID, num: ^i32) -> [^]Atom ---

    LoadFont ¶

    LoadFont :: proc "c" (display: ^Display, name: cstring) -> XID ---
     

    Font metrics

    LoadQueryFont ¶

    LoadQueryFont :: proc "c" (display: ^Display, name: cstring) -> ^XFontStruct ---

    LockDisplay ¶

    LockDisplay :: proc "c" (display: ^Display) ---

    LookupColor ¶

    LookupColor :: proc "c" (display: ^Display, colomap: XID, name: cstring, exact: ^XColor, screen: ^XColor) -> Status ---
     

    Mapping color names to values

    LookupKeysym ¶

    LookupKeysym :: proc "c" (event: ^XKeyEvent, index: i32) -> KeySym ---
     

    Keyboard utility functions

    LookupString ¶

    LookupString :: proc "c" (event: ^XKeyEvent, buffer: [^]u8, count: i32, keysym: ^KeySym, status: ^XComposeStatus) -> i32 ---

    LowerWindow ¶

    LowerWindow :: proc "c" (display: ^Display, window: XID) ---

    MapRaised ¶

    MapRaised :: proc "c" (display: ^Display, window: XID) -> b32 ---

    MapSubwindows ¶

    MapSubwindows :: proc "c" (display: ^Display, window: XID) -> b32 ---

    MapWindow ¶

    MapWindow :: proc "c" (display: ^Display, window: XID) -> b32 ---
     

    Windows: mapping/unmapping

    MaskEvent ¶

    MaskEvent :: proc "c" (display: ^Display, mask: bit_set[EventMaskBits; int], event: ^XEvent) ---

    MatchVisualInfo ¶

    MatchVisualInfo :: proc "c" (display: ^Display, screen_no: i32, depth: i32, class: i32, ret: ^XVisualInfo) -> Status ---

    MaxCmapsOfScreen ¶

    MaxCmapsOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    MaxRequestSize ¶

    MaxRequestSize :: proc "c" (display: ^Display) -> int ---

    MinCmapsOfScreen ¶

    MinCmapsOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    MoveResizeWindow ¶

    MoveResizeWindow :: proc "c" (
    	display: ^Display, 
    	window:  XID, 
    	x:       i32, 
    	y:       i32, 
    	width:   u32, 
    	height:  u32, 
    ) ---

    MoveWindow ¶

    MoveWindow :: proc "c" (display: ^Display, window: XID, x: i32, y: i32) ---

    NewModifiermap ¶

    NewModifiermap :: proc "c" (max_keys_per_mode: i32) -> ^XModifierKeymap ---

    NextEvent ¶

    NextEvent :: proc "c" (display: ^Display, event: ^XEvent) ---

    NextRequest ¶

    NextRequest :: proc "c" (display: ^Display) -> uint ---

    NoOp ¶

    NoOp :: proc "c" (display: ^Display) ---
     

    Generate a no-op request

    OffsetRegion ¶

    OffsetRegion :: proc "c" (region: Region, dx, dy: i32) ---
     

    Moving or shrinking regions

    OpenDisplay ¶

    OpenDisplay :: proc "c" (name: cstring) -> ^Display ---
     

    Opening/closing a display

    OpenIM ¶

    OpenIM :: proc "c" (display: ^Display, rdb: XrmHashBucket, res_name: cstring, res_class: cstring) -> XIM ---

    ParseGeometry ¶

    ParseGeometry :: proc "c" (parsestring: cstring, x_ret: ^i32, y_ret: ^i32, width: ^u32, height: ^u32) -> i32 ---
     

    Parsing the window geometry

    PeekEvent ¶

    PeekEvent :: proc "c" (display: ^Display, event: ^XEvent) ---

    PeekIfEvent ¶

    PeekIfEvent :: proc "c" (display: ^Display, event: ^XEvent, predicate: proc "c" (display: ^Display, event: ^XEvent, ctx: rawptr) -> b32, ctx: rawptr) ---

    Pending ¶

    Pending :: proc "c" (display: ^Display) -> i32 ---

    Permalloc ¶

    Permalloc :: proc "c" (size: u32) -> rawptr ---
     

    Allocating permanent storage

    PlanesOfScreen ¶

    PlanesOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    PointInRegion ¶

    PointInRegion :: proc "c" (reg: Region, x, y: i32) -> b32 ---

    PolygonRegion ¶

    PolygonRegion :: proc "c" (points: [^]XPoint, n: i32, fill: FillRule) -> Region ---

    ProcessInternalConnections ¶

    ProcessInternalConnections :: proc "c" (display: ^Display, fd: i32) ---

    ProtocolRevision ¶

    ProtocolRevision :: proc "c" (display: ^Display) -> i32 ---

    ProtocolVersion ¶

    ProtocolVersion :: proc "c" (display: ^Display) -> i32 ---

    PutBackEvent ¶

    PutBackEvent :: proc "c" (display: ^Display, event: ^XEvent) ---
     

    Putting events back

    PutImage ¶

    PutImage :: proc "c" (
    	display:  ^Display, 
    	drawable: XID, 
    	gc:       GC, 
    	image:    ^XImage, 
    	src_x:    i32, 
    	src_y:    i32, 
    	dst_x:    i32, 
    	dst_y:    i32, 
    	width:    u32, 
    	height:   u32, 
    ) ---

    PutPixel ¶

    PutPixel :: proc "c" (image: ^XImage, x: i32, y: i32, pixel: uint) ---

    QLength ¶

    QLength :: proc "c" (display: ^Display) -> i32 ---

    QueryBestCursor ¶

    QueryBestCursor :: proc "c" (
    	display:    ^Display, 
    	drawable:   XID, 
    	width:      u32, 
    	height:     u32, 
    	out_width:  ^u32, 
    	out_height: ^u32, 
    ) -> Status ---

    QueryBestSize ¶

    QueryBestSize :: proc "c" (
    	display:    ^Display, 
    	class:      i32, 
    	which:      XID, 
    	width:      u32, 
    	height:     u32, 
    	out_width:  ^u32, 
    	out_height: ^u32, 
    ) -> Status ---

    QueryBestStripple ¶

    QueryBestStripple :: proc "c" (
    	display:    ^Display, 
    	which:      XID, 
    	width:      u32, 
    	height:     u32, 
    	out_width:  u32, 
    	out_height: u32, 
    ) -> Status ---

    QueryBestTile ¶

    QueryBestTile :: proc "c" (
    	display:    ^Display, 
    	which:      XID, 
    	width:      u32, 
    	height:     u32, 
    	out_width:  ^u32, 
    	out_height: ^u32, 
    ) -> Status ---

    QueryColor ¶

    QueryColor :: proc "c" (display: ^Display, colormap: XID, color: ^XColor) ---

    QueryColors ¶

    QueryColors :: proc "c" (display: ^Display, colormap: XID, colors: [^]XColor, ncolors: i32) ---

    QueryExtension ¶

    QueryExtension :: proc "c" (display: ^Display, name: cstring, major_opcode_return: ^i32, first_event_return: ^i32, first_error_return: ^i32) -> b32 ---

    QueryFont ¶

    QueryFont :: proc "c" (display: ^Display, id: XID) -> ^XFontStruct ---

    QueryKeymap ¶

    QueryKeymap :: proc "c" (display: ^Display, keys: [^]u32) ---

    QueryPointer ¶

    QueryPointer :: proc "c" (
    	display: ^Display, 
    	window:  XID, 
    	root:    ^XID, 
    	child:   ^XID, 
    	root_x:  ^i32, 
    	root_y:  ^i32, 
    	x:       ^i32, 
    	y:       ^i32, 
    	mask:    ^KeyMask, 
    ) -> b32 ---

    QueryTextExtents ¶

    QueryTextExtents :: proc "c" (
    	display:   ^Display, 
    	font_id:   XID, 
    	string:    [^]u8, 
    	nchars:    i32, 
    	direction: ^FontDirection, 
    	ascent:    ^i32, 
    	descent:   ^i32, 
    	ret:       ^XCharStruct, 
    ) ---

    QueryTextExtents16 ¶

    QueryTextExtents16 :: proc "c" (
    	display:   ^Display, 
    	font_id:   XID, 
    	string:    [^]XChar2b, 
    	nchars:    i32, 
    	direction: ^FontDirection, 
    	ascent:    ^i32, 
    	descent:   ^i32, 
    	ret:       ^XCharStruct, 
    ) ---

    QueryTree ¶

    QueryTree :: proc "c" (
    	display:   ^Display, 
    	window:    XID, 
    	root:      ^XID, 
    	parent:    ^XID, 
    	children:  ^[^]XID, 
    	nchildren: ^u32, 
    ) -> Status ---
     

    Windows: querying information

    RaiseWindow ¶

    RaiseWindow :: proc "c" (display: ^Display, window: XID) ---
     

    Window: changing stacking order

    RebindKeysym ¶

    RebindKeysym :: proc "c" (
    	display:   ^Display, 
    	keysym:    KeySym, 
    	list:      [^]KeySym, 
    	mod_count: i32, 
    	string:    [^]u8, 
    	num_bytes: i32, 
    ) ---

    RecolorCursor ¶

    RecolorCursor :: proc "c" (display: ^Display, cursor: XID, fg: ^XColor, bg: ^XColor) ---

    ReconfigureWMWindow ¶

    ReconfigureWMWindow :: proc "c" (dipslay: ^Display, window: XID, screen_no: i32, mask: bit_set[WindowChangesMaskBits; i32], changes: ^XWindowChanges) -> Status ---

    RectInRegion ¶

    RectInRegion :: proc "c" (reg: Region, x, y: i32, w, h: u32) -> b32 ---

    RefreshKeyboardMapping ¶

    RefreshKeyboardMapping :: proc "c" (event_map: ^XMappingEvent) ---

    RemoveConnectionWatch ¶

    RemoveConnectionWatch :: proc "c" (display: ^Display, procedure: XConnectionWatchProc, data: rawptr) -> Status ---

    RemoveFromSaveSet ¶

    RemoveFromSaveSet :: proc "c" (display: ^Display, window: XID) ---

    RemoveHost ¶

    RemoveHost :: proc "c" (display: ^Display, host: XHostAddress) ---

    RemoveHosts ¶

    RemoveHosts :: proc "c" (display: ^Display, hosts: [^]XHostAddress, nhosts: i32) ---

    ReparentWindow ¶

    ReparentWindow :: proc "c" (display: ^Display, window: XID, parent: XID, x: i32, y: i32) ---
     

    Window and session manager functions

    ResetScreenSaver ¶

    ResetScreenSaver :: proc "c" (display: ^Display) ---

    ResizeWindow ¶

    ResizeWindow :: proc "c" (display: ^Display, window: XID, width: u32, height: u32) ---

    ResourceManagerString ¶

    ResourceManagerString :: proc "c" (display: ^Display) -> cstring ---

    RestackWindows ¶

    RestackWindows :: proc "c" (display: ^Display, windows: [^]XID, nwindows: i32) ---

    RootWindow ¶

    RootWindow :: proc "c" (display: ^Display, screen_no: i32) -> XID ---
     

    Display macros (other)

    RootWindowOfScreen ¶

    RootWindowOfScreen :: proc "c" (screen: ^Screen) -> XID ---

    RotateWindowProperties ¶

    RotateWindowProperties :: proc "c" (display: ^Display, window: XID, props: [^]Atom, nprops: i32, npos: i32) -> i32 ---

    ScreenCount ¶

    ScreenCount :: proc "c" (display: ^Display) -> i32 ---

    ScreenNumberOfScreen ¶

    ScreenNumberOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    ScreenOfDisplay ¶

    ScreenOfDisplay :: proc "c" (display: ^Display, screen_no: i32) -> ^Screen ---

    SelectInput ¶

    SelectInput :: proc "c" (display: ^Display, window: XID, mask: bit_set[EventMaskBits; int]) ---
     

    Events

    SendEvent ¶

    SendEvent :: proc "c" (display: ^Display, window: XID, propagate: b32, mask: bit_set[EventMaskBits; int], event: ^XEvent) -> Status ---
     

    Sending events to other applications

    ServerVendor ¶

    ServerVendor :: proc "c" (display: ^Display) -> cstring ---

    SetAccessControl ¶

    SetAccessControl :: proc "c" (display: ^Display, mode: AccessControlMode) ---
     

    Access control list

    SetAfterFunction ¶

    SetAfterFunction :: proc "c" (display: ^Display, procedure: proc "c" (display: ^Display) -> i32) -> proc "c" (^Display) -> i32 ---
     

    Enabling or disabling synchronization

    SetArcMode ¶

    SetArcMode :: proc "c" (display: ^Display, gc: GC, mode: ArcMode) ---

    SetBackground ¶

    SetBackground :: proc "c" (display: ^Display, gc: GC, bg: uint) ---

    SetClassHint ¶

    SetClassHint :: proc "c" (display: ^Display, window: XID, hint: ^XClassHint) ---

    SetClipMask ¶

    SetClipMask :: proc "c" (display: ^Display, gc: GC, pixmap: XID) ---

    SetClipOrigin ¶

    SetClipOrigin :: proc "c" (display: ^Display, gc: GC, x: i32, y: i32) ---

    SetClipRectangles ¶

    SetClipRectangles :: proc "c" (
    	display:  ^Display, 
    	gc:       GC, 
    	x:        i32, 
    	y:        i32, 
    	rects:    [^]XRectangle, 
    	n:        i32, 
    	ordering: i32, 
    ) ---

    SetCloseDownMode ¶

    SetCloseDownMode :: proc "c" (display: ^Display, mode: CloseMode) ---

    SetCommand ¶

    SetCommand :: proc "c" (display: ^Display, window: XID, argv: [^]cstring, argc: i32) ---
     

    Client to session manager communication

    SetDashes ¶

    SetDashes :: proc "c" (display: ^Display, gc: GC, dash_offs: i32, dash_list: [^]i8, n: i32) ---

    SetErrorHandler ¶

    SetErrorHandler :: proc "c" (handler: proc "c" (display: ^Display, event: ^XErrorEvent) -> i32) -> proc "c" (^Display, ^XErrorEvent) -> i32 ---
     

    Error handling

    SetFillRule ¶

    SetFillRule :: proc "c" (display: ^Display, gc: GC, rule: FillRule) ---

    SetFillStyle ¶

    SetFillStyle :: proc "c" (display: ^Display, gc: GC, style: FillStyle) ---

    SetFont ¶

    SetFont :: proc "c" (display: ^Display, gc: GC, font: XID) ---

    SetFontPath ¶

    SetFontPath :: proc "c" (display: ^Display, dirs: [^]cstring, ndirs: i32) ---
     

    Setting and retrieving font search paths

    SetForeground ¶

    SetForeground :: proc "c" (display: ^Display, gc: GC, fg: uint) ---

    SetFunction ¶

    SetFunction :: proc "c" (display: ^Display, gc: GC, fn: GCFunction) ---

    SetGraphicsExposures ¶

    SetGraphicsExposures :: proc "c" (display: ^Display, gc: GC, exp: b32) ---

    SetICFocus ¶

    SetICFocus :: proc "c" (ic: XIC) ---

    SetICValues ¶

    SetICValues :: proc "c" (ic: XIC, args: ..any) -> cstring ---

    SetIOErrorHandler ¶

    SetIOErrorHandler :: proc "c" (handler: proc "c" (display: ^Display) -> i32) -> proc "c" (^Display) -> i32 ---

    SetIconName ¶

    SetIconName :: proc "c" (display: ^Display, window: XID, name: cstring) ---

    SetIconSizes ¶

    SetIconSizes :: proc "c" (display: ^Display, window: XID, size_list: [^]XIconSize, count: i32) ---

    SetInputFocus ¶

    SetInputFocus :: proc "c" (display: ^Display, focus: XID, revert_to: FocusRevert, time: Time) ---
     

    Controlling input focus

    SetLineAttributes ¶

    SetLineAttributes :: proc "c" (
    	display:    ^Display, 
    	gc:         GC, 
    	width:      u32, 
    	line_style: LineStyle, 
    	cap_style:  CapStyle, 
    	join_style: JoinStyle, 
    ) ---

    SetLocaleModifiers ¶

    SetLocaleModifiers :: proc "c" (modifiers: cstring) -> cstring ---

    SetModifierMapping ¶

    SetModifierMapping :: proc "c" (display: ^Display, modmap: ^XModifierKeymap) -> i32 ---

    SetPlaneMask ¶

    SetPlaneMask :: proc "c" (display: ^Display, gc: GC, pmask: uint) ---

    SetPointerMapping ¶

    SetPointerMapping :: proc "c" (display: ^Display, map_should_not_be_a_keyword: [^]u8, nmap: i32) -> i32 ---

    SetRGBColormaps ¶

    SetRGBColormaps :: proc "c" (display: ^Display, window: XID, colormap: ^XStandardColormap, prop: Atom) ---

    SetRegion ¶

    SetRegion :: proc "c" (display: ^Display, gc: GC, region: Region) ---

    SetScreenSaver ¶

    SetScreenSaver :: proc "c" (display: ^Display, timeout: i32, interval: i32, blanking: ScreenSaverBlanking, exposures: ScreenSavingExposures) ---
     

    Controlling the screen saver

    SetSelectionOwner ¶

    SetSelectionOwner :: proc "c" (display: ^Display, selection: Atom, owner: XID, time: Time) ---
     

    Selections

    SetState ¶

    SetState :: proc "c" (
    	display: ^Display, 
    	gc:      GC, 
    	fg:      uint, 
    	bg:      uint, 
    	fn:      GCFunction, 
    	pmask:   uint, 
    ) ---
     

    Convenience routines for GC

    SetStripple ¶

    SetStripple :: proc "c" (display: ^Display, gc: GC, stripple: XID) ---

    SetSubwindowMode ¶

    SetSubwindowMode :: proc "c" (display: ^Display, gc: GC, mode: SubwindowMode) ---

    SetTSOrigin ¶

    SetTSOrigin :: proc "c" (display: ^Display, gc: GC, x: i32, y: i32) ---

    SetTextProperty ¶

    SetTextProperty :: proc "c" (display: ^Display, window: XID, text_prop: ^XTextProperty, property: Atom) ---

    SetTile ¶

    SetTile :: proc "c" (display: ^Display, gc: GC, tile: XID) ---

    SetTransientForHint ¶

    SetTransientForHint :: proc "c" (display: ^Display, window: XID, prop_window: XID) ---
     

    Setting and reading WM_TRANSIENT_FOR property

    SetWMClientMachine ¶

    SetWMClientMachine :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) ---

    SetWMColormapWindows ¶

    SetWMColormapWindows :: proc "c" (display: ^Display, window: XID, colormap_windows: [^]XID, count: i32) -> Status ---
     

    Setting and reading the WM_COLORMAP_WINDOWS property

    SetWMHints ¶

    SetWMHints :: proc "c" (display: ^Display, window: XID, hints: ^XWMHints) ---

    SetWMIconName ¶

    SetWMIconName :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) ---

    SetWMName ¶

    SetWMName :: proc "c" (display: ^Display, window: XID, prop: ^XTextProperty) ---
     

    Getting and setting the WM_NAME property

    SetWMNormalHints ¶

    SetWMNormalHints :: proc "c" (display: ^Display, window: XID, hints: ^XSizeHints) ---

    SetWMProperties ¶

    SetWMProperties :: proc "c" (
    	display:      ^Display, 
    	window:       XID, 
    	window_name:  ^XTextProperty, 
    	argv:         [^]cstring, 
    	argc:         i32, 
    	normal_hints: ^XSizeHints, 
    	wm_hints:     ^XWMHints, 
    	class_hints:  ^XWMHints, 
    ) ---

    SetWMProtocols ¶

    SetWMProtocols :: proc "c" (display: ^Display, window: XID, protocols: [^]Atom, count: i32) -> Status ---
     

    Setting and reading the WM_PROTOCOLS property

    SetWMSizeHints ¶

    SetWMSizeHints :: proc "c" (display: ^Display, window: XID, hints: ^XSizeHints, prop: Atom) ---

    SetWindowBackground ¶

    SetWindowBackground :: proc "c" (display: ^Display, window: XID, pixel: uint) ---

    SetWindowBackgroundPixmap ¶

    SetWindowBackgroundPixmap :: proc "c" (display: ^Display, window: XID, pixmap: XID) ---

    SetWindowBorder ¶

    SetWindowBorder :: proc "c" (display: ^Display, window: XID, pixel: uint) ---

    SetWindowBorderWidth ¶

    SetWindowBorderWidth :: proc "c" (display: ^Display, window: XID, width: u32) ---

    SetWindowColormap ¶

    SetWindowColormap :: proc "c" (display: ^Display, window: XID, colormap: XID) ---

    ShowCursor ¶

    ShowCursor :: proc "c" (display: ^Display, window: XID) ---

    ShrinkRegion ¶

    ShrinkRegion :: proc "c" (region: Region, dx, dy: i32) ---

    StoreBuffer ¶

    StoreBuffer :: proc "c" (display: ^Display, bytes: [^]u8, nbytes: i32, buffer: i32) ---

    StoreBytes ¶

    StoreBytes :: proc "c" (display: ^Display, bytes: [^]u8, nbytes: i32) ---
     

    Using cut buffers

    StoreColor ¶

    StoreColor :: proc "c" (display: ^Display, colormap: XID, color: ^XColor) ---
     

    Modifying and querying colormap cells

    StoreColors ¶

    StoreColors :: proc "c" (display: ^Display, colormap: XID, color: [^]XColor, ncolors: i32) ---

    StoreName ¶

    StoreName :: proc "c" (display: ^Display, window: XID, name: cstring) ---

    StoreNamedColor ¶

    StoreNamedColor :: proc "c" (display: ^Display, colormap: XID, name: cstring, pixel: uint, flags: bit_set[ColorFlagsBits; i32]) ---

    StringToKeysym ¶

    StringToKeysym :: proc "c" (str: cstring) -> KeySym ---

    SubImage ¶

    SubImage :: proc "c" (image: ^XImage, x: i32, y: i32, w: u32, h: u32) -> ^XImage ---

    SubtractRegion ¶

    SubtractRegion :: proc "c" (sra, srb, ret: Region) ---

    Sync ¶

    Sync :: proc "c" (display: ^Display, discard: b32) -> i32 ---

    Synchronize ¶

    Synchronize :: proc "c" (display: ^Display, onoff: b32) -> proc "c" (^Display) -> i32 ---

    TextExtents ¶

    TextExtents :: proc "c" (
    	font_struct: ^XFontStruct, 
    	string:      [^]u8, 
    	nchars:      i32, 
    	direction:   ^FontDirection, 
    	ascent:      ^i32, 
    	descent:     ^i32, 
    	ret:         ^XCharStruct, 
    ) ---

    TextExtents16 ¶

    TextExtents16 :: proc "c" (
    	font_struct: ^XFontStruct, 
    	string:      [^]XChar2b, 
    	nchars:      i32, 
    	direction:   ^FontDirection, 
    	ascent:      ^i32, 
    	descent:     ^i32, 
    	ret:         ^XCharStruct, 
    ) ---

    TextWidth ¶

    TextWidth :: proc "c" (font_struct: ^XFontStruct, string: [^]u8, count: i32) -> i32 ---
     

    Computing character string sizes

    TextWidth16 ¶

    TextWidth16 :: proc "c" (font_struct: ^XFontStruct, string: [^]XChar2b, count: i32) -> i32 ---

    TranslateCoordinates ¶

    TranslateCoordinates :: proc "c" (
    	display:    ^Display, 
    	src_window: XID, 
    	dst_window: XID, 
    	src_x:      i32, 
    	src_y:      i32, 
    	dst_x:      ^i32, 
    	dst_y:      ^i32, 
    	dst_child:  ^XID, 
    ) -> b32 ---
     

    Windows: translating screen coordinates

    UndefineCursor ¶

    UndefineCursor :: proc "c" (display: ^Display, window: XID) -> i32 ---

    UngrabButton ¶

    UngrabButton :: proc "c" (display: ^Display, button: u32, modifiers: bit_set[InputMaskBits; i32], grab_window: XID) ---

    UngrabKey ¶

    UngrabKey :: proc "c" (display: ^Display, keycode: i32, modifiers: bit_set[InputMaskBits; i32], grab_window: XID) ---

    UngrabKeyboard ¶

    UngrabKeyboard :: proc "c" (display: ^Display, time: Time) ---

    UngrabPointer ¶

    UngrabPointer :: proc "c" (display: ^Display, time: Time) -> i32 ---

    UngrabServer ¶

    UngrabServer :: proc "c" (display: ^Display) ---

    UninstallColormap ¶

    UninstallColormap :: proc "c" (display: ^Display, colormap: XID) ---

    UnionRectWithRegion ¶

    UnionRectWithRegion :: proc "c" (rect: ^XRectangle, src, dst: Region) ---

    UnionRegion ¶

    UnionRegion :: proc "c" (sra, srb, ret: Region) ---

    UnloadFont ¶

    UnloadFont :: proc "c" (display: ^Display, font: XID) ---

    UnlockDisplay ¶

    UnlockDisplay :: proc "c" (display: ^Display) ---

    UnmapSubwindows ¶

    UnmapSubwindows :: proc "c" (display: ^Display, window: XID) -> b32 ---

    UnmapWindow ¶

    UnmapWindow :: proc "c" (display: ^Display, window: XID) -> b32 ---

    UnsetICFocus ¶

    UnsetICFocus :: proc "c" (ic: XIC) ---

    VaCreateNestedList ¶

    VaCreateNestedList :: proc "c" (unused: i32, args: ..any) -> XVaNestedList ---

    VendorRelease ¶

    VendorRelease :: proc "c" (display: ^Display) -> i32 ---

    VisualIDFromVisual ¶

    VisualIDFromVisual :: proc "c" (visual: ^Visual) -> VisualID ---
     

    Windows functions

    WMGeometry ¶

    WMGeometry :: proc "c" (
    	display:   ^Display, 
    	screen_no: i32, 
    	user_geom: cstring, 
    	def_geom:  cstring, 
    	bwidth:    u32, 
    	hints:     ^XSizeHints, 
    	x_ret:     ^i32, 
    	y_ret:     ^i32, 
    	w_ret:     ^u32, 
    	h_ret:     ^u32, 
    	grav:      ^Gravity, 
    ) -> i32 ---

    WarpPointer ¶

    WarpPointer :: proc "c" (
    	display:    ^Display, 
    	src_window: XID, 
    	dst_window: XID, 
    	src_x:      i32, 
    	src_y:      i32, 
    	src_width:  u32, 
    	src_height: u32, 
    	dst_x:      i32, 
    	dst_y:      i32, 
    ) ---
     

    Moving the pointer

    WhitePixel ¶

    WhitePixel :: proc "c" (display: ^Display, screen_no: i32) -> uint ---

    WhitePixelsOfScreen ¶

    WhitePixelsOfScreen :: proc "c" (screen: ^Screen) -> uint ---

    WidthMMOfScreen ¶

    WidthMMOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    WidthOfScreen ¶

    WidthOfScreen :: proc "c" (screen: ^Screen) -> i32 ---

    WindowEvent ¶

    WindowEvent :: proc "c" (display: ^Display, window: XID, mask: bit_set[EventMaskBits; int], event: ^XEvent) ---
     

    Selecting events using a window or event mask

    WithdrawWindow ¶

    WithdrawWindow :: proc "c" (dipslay: ^Display, window: XID, screen_no: i32) -> Status ---

    XIMaskIsSet ¶

    XIMaskIsSet :: proc(ptr: [^]u8, event: i32) -> bool {…}

    XIQueryVersion ¶

    XIQueryVersion :: proc "c" (display: ^Display, major: ^i32, minor: ^i32) -> Status ---

    XISelectEvents ¶

    XISelectEvents :: proc "c" (display: ^Display, window: XID, masks: [^]XIEventMask, num_masks: i32) -> i32 ---

    XISetMask ¶

    XISetMask :: proc(ptr: [^]u8, event: XIEventType) {…}

    XRRFreeCrtcInfo ¶

    XRRFreeCrtcInfo :: proc "c" (crtc_info: ^XRRCrtcInfo) ---

    XRRFreeOutputInfo ¶

    XRRFreeOutputInfo :: proc "c" (output_info: ^XRROutputInfo) ---

    XRRFreeScreenResources ¶

    XRRFreeScreenResources :: proc "c" (resources: ^XRRScreenResources) ---

    XRRGetCrtcInfo ¶

    XRRGetCrtcInfo :: proc "c" (display: ^Display, resources: ^XRRScreenResources, crtc: XID) -> ^XRRCrtcInfo ---

    XRRGetMonitors ¶

    XRRGetMonitors :: proc "c" (dpy: ^Display, window: XID, get_active: b32, nmonitors: ^i32) -> [^]XRRMonitorInfo ---

    XRRGetOutputInfo ¶

    XRRGetOutputInfo :: proc "c" (display: ^Display, resources: ^XRRScreenResources, output: XID) -> ^XRROutputInfo ---

    XRRGetScreenResources ¶

    XRRGetScreenResources :: proc "c" (display: ^Display, window: XID) -> ^XRRScreenResources ---

    XRRSizes ¶

    XRRSizes :: proc "c" (display: ^Display, screen: i32, nsizes: ^i32) -> [^]XRRScreenSize ---

    XcmsAllocColor ¶

    XcmsAllocColor :: proc "c" (display: ^Display, colormap: XID, color: ^XcmsColor, format: uint) -> Status ---

    XcmsAllocNamedColor ¶

    XcmsAllocNamedColor :: proc "c" (
    	display:  ^Display, 
    	colormap: XID, 
    	name:     cstring, 
    	screen:   ^XcmsColor, 
    	exact:    ^XcmsColor, 
    	format:   uint, 
    ) -> Status ---

    XcmsCCCOfColormap ¶

    XcmsCCCOfColormap :: proc "c" (display: ^Display, colormap: XID) -> XcmsCCC ---
     

    Getting and setting the color conversion context (CCC) of a colormap

    XcmsCIELabClipL ¶

    XcmsCIELabClipL :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---
     

    Pre-defined gamut compression callbacks

    XcmsCIELabClipLab ¶

    XcmsCIELabClipLab :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsCIELabClipab ¶

    XcmsCIELabClipab :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsCIELabQueryMaxC ¶

    XcmsCIELabQueryMaxC :: proc "c" (ccc: XcmsCCC, hue: f64, lstar: f64, color: ^XcmsColor) -> Status ---
     

    CIELab queries

    XcmsCIELabQueryMaxL ¶

    XcmsCIELabQueryMaxL :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELabQueryMaxLC ¶

    XcmsCIELabQueryMaxLC :: proc "c" (ccc: XcmsCCC, hue: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELabQueryMinL ¶

    XcmsCIELabQueryMinL :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELabWhiteShiftColors ¶

    XcmsCIELabWhiteShiftColors :: proc "c" (
    	ctx:                 XcmsCCC, 
    	initial_white_point: ^XcmsColor, 
    	target_white_point:  ^XcmsColor, 
    	target_format:       uint, 
    	colors:              [^]XcmsColor, 
    	ncolors:             u32, 
    	compression:         [^]b32, 
    ) -> Status ---
     

    Pre-defined white-point adjustment procedures

    XcmsCIELuvClipL ¶

    XcmsCIELuvClipL :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsCIELuvClipLuv ¶

    XcmsCIELuvClipLuv :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsCIELuvClipuv ¶

    XcmsCIELuvClipuv :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsCIELuvQueryMaxC ¶

    XcmsCIELuvQueryMaxC :: proc "c" (ccc: XcmsCCC, hue: f64, lstar: f64, color: ^XcmsColor) -> Status ---
     

    CIEluv queries

    XcmsCIELuvQueryMaxL ¶

    XcmsCIELuvQueryMaxL :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELuvQueryMaxLC ¶

    XcmsCIELuvQueryMaxLC :: proc "c" (ccc: XcmsCCC, hue: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELuvQueryMinL ¶

    XcmsCIELuvQueryMinL :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsCIELuvWhiteShiftColors ¶

    XcmsCIELuvWhiteShiftColors :: proc "c" (
    	ctx:                 XcmsCCC, 
    	initial_white_point: ^XcmsColor, 
    	target_white_point:  ^XcmsColor, 
    	target_format:       uint, 
    	colors:              [^]XcmsColor, 
    	ncolors:             u32, 
    	compression:         [^]b32, 
    ) -> Status ---

    XcmsClientWhitePointOfCCC ¶

    XcmsClientWhitePointOfCCC :: proc "c" (ccc: XcmsCCC) -> XcmsColor ---

    XcmsConvertColors ¶

    XcmsConvertColors :: proc "c" (ccc: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, format: uint, cflags: [^]b32) -> Status ---
     

    Converting between colorspaces

    XcmsCreateCCC ¶

    XcmsCreateCCC :: proc "c" (
    	display:     ^Display, 
    	screen_no:   i32, 
    	visual:      ^Visual, 
    	white_point: ^XcmsColor, 
    	cproc:       XcmsCompressionProc, 
    	cdata:       rawptr, 
    	aproc:       XcmsWhiteAdjustProc, 
    	adata:       rawptr, 
    ) -> XcmsCCC ---
     

    Creating and freeing the color conversion context

    XcmsDefaultCCC ¶

    XcmsDefaultCCC :: proc "c" (display: ^Display, screen_no: i32) -> XcmsCCC ---

    XcmsDisplayOfCCC ¶

    XcmsDisplayOfCCC :: proc "c" (ccc: XcmsCCC) -> ^Display ---
     

    Color conversion context macros

    XcmsFreeCCC ¶

    XcmsFreeCCC :: proc "c" (ccc: XcmsCCC) ---

    XcmsLookupColor ¶

    XcmsLookupColor :: proc "c" (
    	display:  ^Display, 
    	colormap: XID, 
    	name:     cstring, 
    	exact:    XcmsColor, 
    	screen:   XcmsColor, 
    	format:   uint, 
    ) -> Status ---

    XcmsQueryBlack ¶

    XcmsQueryBlack :: proc "c" (ccc: XcmsCCC, format: uint, color: ^XcmsColor) -> Status ---
     

    Color querying

    XcmsQueryBlue ¶

    XcmsQueryBlue :: proc "c" (ccc: XcmsCCC, format: uint, color: ^XcmsColor) -> Status ---

    XcmsQueryColor ¶

    XcmsQueryColor :: proc "c" (display: ^Display, colormap: XID, color: ^XcmsColor, format: uint) -> Status ---

    XcmsQueryColors ¶

    XcmsQueryColors :: proc "c" (display: ^Display, colormap: XID, color: [^]XcmsColor, ncolors: i32, format: uint) -> Status ---

    XcmsQueryGreen ¶

    XcmsQueryGreen :: proc "c" (ccc: XcmsCCC, format: uint, color: ^XcmsColor) -> Status ---

    XcmsQueryRed ¶

    XcmsQueryRed :: proc "c" (ccc: XcmsCCC, format: uint, color: ^XcmsColor) -> Status ---

    XcmsQueryWhite ¶

    XcmsQueryWhite :: proc "c" (ccc: XcmsCCC, format: uint, color: ^XcmsColor) -> Status ---

    XcmsScreenNumberOfCCC ¶

    XcmsScreenNumberOfCCC :: proc "c" (ccc: XcmsCCC) -> i32 ---

    XcmsScreenWhitePointOfCCC ¶

    XcmsScreenWhitePointOfCCC :: proc "c" (ccc: XcmsCCC) -> XcmsColor ---

    XcmsSetCCCOfColormap ¶

    XcmsSetCCCOfColormap :: proc "c" (display: ^Display, colormap: XID, ccc: XcmsCCC) -> XcmsCCC ---

    XcmsSetCompressionProc ¶

    XcmsSetCompressionProc :: proc "c" (ccc: XcmsCCC, cproc: XcmsCompressionProc, data: rawptr) -> XcmsCompressionProc ---

    XcmsSetWhiteAdjustProc ¶

    XcmsSetWhiteAdjustProc :: proc "c" (ccc: XcmsCCC, aproc: XcmsWhiteAdjustProc, data: rawptr) -> XcmsWhiteAdjustProc ---

    XcmsSetWhitePoint ¶

    XcmsSetWhitePoint :: proc "c" (ccc: XcmsCCC, color: ^XcmsColor) -> Status ---
     

    Modifying the attributes of color conversion context

    XcmsStoreColor ¶

    XcmsStoreColor :: proc "c" (display: ^Display, colormap: XID, color: ^XcmsColor) -> Status ---

    XcmsStoreColors ¶

    XcmsStoreColors :: proc "c" (display: ^Display, colormap: XID, colors: [^]XcmsColor, ncolors: XcmsColor, cflags: [^]b32) -> Status ---

    XcmsTekHVCClipC ¶

    XcmsTekHVCClipC :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsTekHVCClipV ¶

    XcmsTekHVCClipV :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsTekHVCClipVC ¶

    XcmsTekHVCClipVC :: proc "c" (ctx: XcmsCCC, colors: [^]XcmsColor, ncolors: u32, index: u32, flags: [^]b32) -> Status ---

    XcmsTekHVCQueryMaxC ¶

    XcmsTekHVCQueryMaxC :: proc "c" (ccc: XcmsCCC, hue: f64, value: f64, color: ^XcmsColor) -> Status ---
     

    TexHVX queries

    XcmsTekHVCQueryMaxV ¶

    XcmsTekHVCQueryMaxV :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsTekHVCQueryMaxVC ¶

    XcmsTekHVCQueryMaxVC :: proc "c" (ccc: XcmsCCC, hue: f64, color: ^XcmsColor) -> Status ---

    XcmsTekHVCQueryMaxVSamples ¶

    XcmsTekHVCQueryMaxVSamples :: proc "c" (ccc: XcmsCCC, hue: f64, colors: [^]XcmsColor, nsamples: u32) -> Status ---

    XcmsTekHVCQueryMinV ¶

    XcmsTekHVCQueryMinV :: proc "c" (ccc: XcmsCCC, hue: f64, chroma: f64, color: ^XcmsColor) -> Status ---

    XcmsTekHVCWhiteShiftColors ¶

    XcmsTekHVCWhiteShiftColors :: proc "c" (
    	ctx:                 XcmsCCC, 
    	initial_white_point: ^XcmsColor, 
    	target_white_point:  ^XcmsColor, 
    	target_format:       uint, 
    	colors:              [^]XcmsColor, 
    	ncolors:             u32, 
    	compression:         [^]b32, 
    ) -> Status ---

    XcmsVisualOfCCC ¶

    XcmsVisualOfCCC :: proc "c" (ccc: XcmsCCC) -> ^Visual ---

    XkbGetKeySyms ¶

    XkbGetKeySyms :: proc "c" (display: ^Display, first: u32, num: u32, xkb: ^XkbDescRec) -> Status ---

    XkbGetMap ¶

    XkbGetMap :: proc "c" (display: ^Display, which: bit_set[XkbInfoMaskBits; int], device_spec: i32) -> ^XkbDescRec ---

    XkbGetState ¶

    XkbGetState :: proc "c" (display: ^Display, device_spec: u32, return_state: ^XkbStateRec) -> Status ---

    XkbGetUpdatedMap ¶

    XkbGetUpdatedMap :: proc "c" (display: ^Display, which: bit_set[XkbInfoMaskBits; int], desc: ^XkbDescRec) -> b32 ---

    XkbQueryExtension ¶

    XkbQueryExtension :: proc "c" (
    	display:           ^Display, 
    	opcode_return:     ^i32, 
    	event_base_return: ^i32, 
    	error_base_return: ^i32, 
    	major_return:      ^i32, 
    	minor_return:      ^i32, 
    ) -> b32 ---

    XkbSelectEvents ¶

    XkbSelectEvents :: proc "c" (display: ^Display, deviceID: u32, bits_to_change: bit_set[XkbEventType; int], values: bit_set[XkbEventType; int]) -> b32 ---

    XkbSetDetectableAutoRepeat ¶

    XkbSetDetectableAutoRepeat :: proc "c" (display: ^Display, detectable: b32, supported: ^b32) -> b32 ---

    XkbUseExtension ¶

    XkbUseExtension :: proc "c" (display: ^Display, major_return: ^i32, minor_return: ^i32) -> b32 ---

    XorRegion ¶

    XorRegion :: proc "c" (sra, srb, ret: Region) ---

    XrmGetResource ¶

    XrmGetResource :: proc "c" (db: XrmDatabase, name: cstring, class: cstring, type_return: ^cstring, val_return: ^XrmValue) -> b32 ---

    XrmGetStringDatabase ¶

    XrmGetStringDatabase :: proc "c" (data: cstring) -> XrmDatabase ---

    XrmInitialize ¶

    XrmInitialize :: proc "c" () ---

    Xutf8LookupString ¶

    Xutf8LookupString :: proc "c" (
    	ic:            XIC, 
    	event:         ^XKeyEvent, 
    	buffer_return: cstring, 
    	bytes_buffer:  i32, 
    	keysym_return: ^KeySym, 
    	status_return: ^LookupStringStatus, 
    ) -> i32 ---

    cursorGetDefaultSize ¶

    cursorGetDefaultSize :: proc "c" (display: ^Display) -> i32 ---

    cursorGetTheme ¶

    cursorGetTheme :: proc "c" (display: ^Display) -> cstring ---

    cursorImageCreate ¶

    cursorImageCreate :: proc "c" (width: i32, height: i32) -> ^CursorImage ---

    cursorImageDestroy ¶

    cursorImageDestroy :: proc "c" (img: rawptr) ---

    cursorImageLoadCursor ¶

    cursorImageLoadCursor :: proc "c" (display: ^Display, img: ^CursorImage) -> XID ---

    cursorLibraryLoadCursor ¶

    cursorLibraryLoadCursor :: proc "c" (display: ^Display, name: cstring) -> XID ---

    cursorLibraryLoadImage ¶

    cursorLibraryLoadImage :: proc "c" (name: cstring, theme: cstring, size: i32) -> rawptr ---

    mbSetWMProperties ¶

    mbSetWMProperties :: proc "c" (
    	display:      ^Display, 
    	window:       XID, 
    	window_name:  cstring, 
    	icon_name:    cstring, 
    	argv:         [^]cstring, 
    	argc:         i32, 
    	normal_hints: ^XSizeHints, 
    	wm_hints:     ^XWMHints, 
    	class_hints:  ^XClassHint, 
    ) ---
     

    Using window manager convenience functions

    utf8SetWMProperties ¶

    utf8SetWMProperties :: proc "c" (
    	display:      ^Display, 
    	window:       XID, 
    	window_name:  cstring, 
    	icon_name:    cstring, 
    	argv:         ^cstring, 
    	argc:         i32, 
    	normal_hints: ^XSizeHints, 
    	wm_hints:     ^XWMHints, 
    	class_hints:  ^XClassHint, 
    ) ---

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2026-08 (vendor "odin") Windows_amd64 @ 2026-08-25 21:21:43.527291700 +0000 UTC