summaryrefslogtreecommitdiff
path: root/packages/x11
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-01-26 20:02:30 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2008-01-26 20:02:30 +0000
commit9d6632feaa3bebecf2e7641365803a4a856fc349 (patch)
tree4f2faeeddd7e3e8e1510835af930a3f3b1ffcedd /packages/x11
parent8c78fb6cdb68cde1309cac69a0aa0d7a991a0a5f (diff)
downloadfpc-9d6632feaa3bebecf2e7641365803a4a856fc349.tar.gz
* X11 moved
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@9963 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/x11')
-rw-r--r--packages/x11/Makefile2288
-rw-r--r--packages/x11/Makefile.fpc29
-rw-r--r--packages/x11/fpmake.pp101
-rw-r--r--packages/x11/src/cursorfont.pp116
-rw-r--r--packages/x11/src/keysym.pp2009
-rw-r--r--packages/x11/src/randr.inc74
-rw-r--r--packages/x11/src/x.pp432
-rw-r--r--packages/x11/src/xatom.pp88
-rw-r--r--packages/x11/src/xcms.pp378
-rw-r--r--packages/x11/src/xf86dga.pp279
-rw-r--r--packages/x11/src/xf86dga1.inc125
-rw-r--r--packages/x11/src/xf86vmode.pp339
-rw-r--r--packages/x11/src/xi.pp323
-rw-r--r--packages/x11/src/xinerama.pp28
-rw-r--r--packages/x11/src/xkb.pp2855
-rw-r--r--packages/x11/src/xkblib.pp827
-rw-r--r--packages/x11/src/xlib.pp2077
-rw-r--r--packages/x11/src/xrandr.pp200
-rw-r--r--packages/x11/src/xrender.pp233
-rw-r--r--packages/x11/src/xresource.pp231
-rw-r--r--packages/x11/src/xshm.pp87
-rw-r--r--packages/x11/src/xutil.pp386
-rw-r--r--packages/x11/src/xv.pp118
-rw-r--r--packages/x11/src/xvlib.pp408
24 files changed, 14031 insertions, 0 deletions
diff --git a/packages/x11/Makefile b/packages/x11/Makefile
new file mode 100644
index 0000000000..8ba9cadfa6
--- /dev/null
+++ b/packages/x11/Makefile
@@ -0,0 +1,2288 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/01/26]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded
+BSDs = freebsd netbsd openbsd darwin
+UNIXs = linux $(BSDs) solaris qnx
+LIMIT83fs = go32v2 os2 emx watcom
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override DEFAULT_FPCDIR=../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifneq ($(words $(FPC_COMPILERINFO)),5)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
+FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
+FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+override PACKAGE_NAME=x11
+override PACKAGE_VERSION=2.0.0
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_UNITS+=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_INCLUDEDIR+=src
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_SOURCEDIR+=src tests
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_SOURCEDIR+=src tests
+endif
+override SHARED_BUILD=n
+override SHARED_BUILD=n
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+ifeq ($(OS_SOURCE),linux)
+ifndef GCCLIBDIR
+ifeq ($(CPU_TARGET),i386)
+ifneq ($(findstring x86_64,$(shell uname -a)),)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m32 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifeq ($(CPU_TARGET),powerpc64)
+ifeq ($(BINUTILSPREFIX),)
+GCCLIBDIR:=$(shell dirname `gcc -m64 -print-libgcc-file-name`)
+endif
+endif
+endif
+ifndef GCCLIBDIR
+CROSSGCC=$(strip $(wildcard $(addsuffix /$(BINUTILSPREFIX)gcc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(CROSSGCC),)
+GCCLIBDIR:=$(shell dirname `$(CROSSGCC) -print-libgcc-file-name`)
+endif
+endif
+ifndef OTHERLIBDIR
+OTHERLIBDIR:=$(shell grep -v "^\#" /etc/ld.so.conf | awk '{ ORS=" "; print $1 }')
+endif
+endif
+ifdef inUnix
+ifeq ($(OS_SOURCE),netbsd)
+OTHERLIBDIR+=/usr/pkg/lib
+endif
+export GCCLIBDIR OTHERLIB
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+endif
+ifeq ($(OS_TARGET),darwin)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+else
+ifeq ($(OS_TARGET),go32v1)
+PPUEXT=.pp1
+OEXT=.o1
+ASMEXT=.s1
+SMARTEXT=.sl1
+STATICLIBEXT=.a1
+SHAREDLIBEXT=.so1
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+SHORTSUFFIX=wat
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+PPUEXT=.ppw
+OEXT=.ow
+ASMEXT=.sw
+SMARTEXT=.slw
+STATICLIBEXT=.aw
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+PPUEXT=.ppo
+ASMEXT=.so2
+OEXT=.oo2
+AOUTEXT=.out
+SMARTEXT=.sl2
+STATICLIBPREFIX=
+STATICLIBEXT=.ao2
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),atari)
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nw
+endif
+ifeq ($(OS_TARGET),netwlibc)
+STATICLIBPREFIX=
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.nlm
+EXEEXT=.nlm
+SHORTSUFFIX=nwl
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+PPUEXT=.ppu
+ASMEXT=.s
+OEXT=.o
+SMARTEXT=.sl
+STATICLIBEXT=.a
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+endif
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),win32)
+ifeq ($(CROSSBINDIR),)
+ASNAME=asw
+LDNAME=ldw
+ARNAME=arw
+endif
+endif
+endif
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+PPAS=ppas$(SRCBATCHEXT)
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ifndef UPXPROG
+ifeq ($(OS_TARGET),go32v2)
+UPXPROG:=1
+endif
+ifeq ($(OS_TARGET),win32)
+UPXPROG:=1
+endif
+ifdef UPXPROG
+UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(UPXPROG),)
+UPXPROG=
+else
+UPXPROG:=$(firstword $(UPXPROG))
+endif
+else
+UPXPROG=
+endif
+endif
+export UPXPROG
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=rtl
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(FPCMADE):
+ $(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(CPU_TARGET)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(CPU_TARGET)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+ifeq ($(CPU_TARGET),i386)
+override FPCOPT+=-Aas
+endif
+endif
+ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(OS_TARGET),linux)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef GCCLIBDIR
+override FPCOPT+=-Fl$(GCCLIBDIR)
+endif
+ifdef OTHERLIBDIR
+override FPCOPT+=$(addprefix -Fl,$(OTHERLIBDIR))
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(FPC) $(FPCOPT)
+ifeq (,$(findstring -s ,$(COMPILER)))
+EXECPPAS=
+else
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+endif
+.PHONY: fpc_units
+ifneq ($(TARGET_UNITS)$(TARGET_IMPLICITUNITS),)
+override ALLTARGET+=fpc_units
+override UNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_UNITS))
+override IMPLICITUNITPPUFILES=$(addsuffix $(PPUEXT),$(TARGET_IMPLICITUNITS))
+override INSTALLPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+override CLEANPPUFILES+=$(UNITPPUFILES) $(IMPLICITUNITPPUFILES)
+endif
+fpc_units: $(COMPILER_UNITTARGETDIR) $(UNITPPUFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
+$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
+ @$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_all: $(FPCMADE)
+fpc_smart:
+ $(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+ $(MAKE) all DEBUG=1
+fpc_release:
+ $(MAKE) all RELEASE=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
+$(COMPILER_UNITTARGETDIR):
+ $(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
+$(COMPILER_TARGETDIR):
+ $(MKDIRTREE) $(COMPILER_TARGETDIR)
+%$(PPUEXT): %.pp
+ $(COMPILER) $<
+ $(EXECPPAS)
+%$(PPUEXT): %.pas
+ $(COMPILER) $<
+ $(EXECPPAS)
+%$(EXEEXT): %.pp
+ $(COMPILER) $<
+ $(EXECPPAS)
+%$(EXEEXT): %.pas
+ $(COMPILER) $<
+ $(EXECPPAS)
+%$(EXEEXT): %.lpr
+ $(COMPILER) $<
+ $(EXECPPAS)
+%$(EXEEXT): %.dpr
+ $(COMPILER) $<
+ $(EXECPPAS)
+%.res: %.rc
+ windres -i $< -o $@
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.inc $(COMPILER_INCLUDEDIR)
+vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_shared
+override INSTALLTARGET+=fpc_shared_install
+ifndef SHARED_LIBVERSION
+SHARED_LIBVERSION=$(FPC_VERSION)
+endif
+ifndef SHARED_LIBNAME
+SHARED_LIBNAME=$(PACKAGE_NAME)
+endif
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
+endif
+ifndef SHARED_LIBUNITS
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
+endif
+fpc_shared:
+ifdef HASSHAREDLIB
+ $(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+ $(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
+else
+ @$(ECHO) Shared Libraries not supported
+endif
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+ $(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+ $(MKDIR) $(INSTALL_BINDIR)
+ifdef UPXPROG
+ -$(UPXPROG) $(INSTALLEXEFILES)
+endif
+ $(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+ $(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+ $(MKDIR) $(INSTALL_UNITDIR)
+ $(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+ $(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+ $(MKDIR) $(INSTALL_LIBDIR)
+ $(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+ ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+ $(MKDIR) $(INSTALL_DATADIR)
+ $(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+ $(MKDIR) $(INSTALL_SOURCEDIR)
+ $(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+ $(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+ $(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_distinstall
+fpc_distinstall: install exampleinstall
+.PHONY: fpc_zipinstall fpc_zipsourceinstall fpc_zipexampleinstall
+ifndef PACKDIR
+ifndef inUnix
+PACKDIR=$(BASEDIR)/../fpc-pack
+else
+PACKDIR=/tmp/fpc-pack
+endif
+endif
+ifndef ZIPNAME
+ifdef DIST_ZIPNAME
+ZIPNAME=$(DIST_ZIPNAME)
+else
+ZIPNAME=$(PACKAGE_NAME)
+endif
+endif
+ifndef FULLZIPNAME
+FULLZIPNAME=$(ZIPCROSSPREFIX)$(ZIPPREFIX)$(ZIPNAME)$(ZIPSUFFIX)
+endif
+ifndef ZIPTARGET
+ifdef DIST_ZIPTARGET
+ZIPTARGET=DIST_ZIPTARGET
+else
+ZIPTARGET=install
+endif
+endif
+ifndef USEZIP
+ifdef inUnix
+USETAR=1
+endif
+endif
+ifndef inUnix
+USEZIPWRAPPER=1
+endif
+ifdef USEZIPWRAPPER
+ZIPPATHSEP=$(PATHSEP)
+ZIPWRAPPER=$(subst /,$(PATHSEP),$(DIST_DESTDIR)/fpczip$(SRCBATCHEXT))
+else
+ZIPPATHSEP=/
+endif
+ZIPCMD_CDPACK:=cd $(subst /,$(ZIPPATHSEP),$(PACKDIR))
+ZIPCMD_CDBASE:=cd $(subst /,$(ZIPPATHSEP),$(BASEDIR))
+ifdef USETAR
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(TAREXT)
+ZIPCMD_ZIP:=$(TARPROG) cf$(TAROPT) $(ZIPDESTFILE) *
+else
+ZIPDESTFILE:=$(DIST_DESTDIR)/$(FULLZIPNAME)$(ZIPEXT)
+ZIPCMD_ZIP:=$(subst /,$(ZIPPATHSEP),$(ZIPPROG)) -Dr $(ZIPOPT) $(ZIPDESTFILE) *
+endif
+fpc_zipinstall:
+ $(MAKE) $(ZIPTARGET) INSTALL_PREFIX=$(PACKDIR) ZIPINSTALL=1
+ $(MKDIR) $(DIST_DESTDIR)
+ $(DEL) $(ZIPDESTFILE)
+ifdef USEZIPWRAPPER
+ifneq ($(ECHOREDIR),echo)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDPACK))" > $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_ZIP))" >> $(ZIPWRAPPER)
+ $(ECHOREDIR) -e "$(subst \,\\,$(ZIPCMD_CDBASE))" >> $(ZIPWRAPPER)
+else
+ echo $(ZIPCMD_CDPACK) > $(ZIPWRAPPER)
+ echo $(ZIPCMD_ZIP) >> $(ZIPWRAPPER)
+ echo $(ZIPCMD_CDBASE) >> $(ZIPWRAPPER)
+endif
+ifdef inUnix
+ /bin/sh $(ZIPWRAPPER)
+else
+ifdef RUNBATCH
+ $(RUNBATCH) (ZIPWRAPPER)
+else
+ $(ZIPWRAPPER)
+endif
+endif
+ $(DEL) $(ZIPWRAPPER)
+else
+ $(ZIPCMD_CDPACK) ; $(ZIPCMD_ZIP) ; $(ZIPCMD_CDBASE)
+endif
+ $(DELTREE) $(PACKDIR)
+fpc_zipsourceinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=sourceinstall ZIPSUFFIX=$(ZIPSOURCESUFFIX)
+fpc_zipexampleinstall:
+ifdef HASEXAMPLES
+ $(MAKE) fpc_zipinstall ZIPTARGET=exampleinstall ZIPSUFFIX=$(ZIPEXAMPLESUFFIX)
+endif
+fpc_zipdistinstall:
+ $(MAKE) fpc_zipinstall ZIPTARGET=distinstall
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+ -$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+ -$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+ -$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+ -$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+ -$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+ -$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+ -$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ -$(DELTREE) units
+ -$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+ -$(DEL) *.o *.ppu *.a
+endif
+ -$(DELTREE) *$(SMARTEXT)
+ -$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+ -$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+ -$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+ -$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+ @$(ECHO)
+ @$(ECHO) == Package info ==
+ @$(ECHO) Package Name..... $(PACKAGE_NAME)
+ @$(ECHO) Package Version.. $(PACKAGE_VERSION)
+ @$(ECHO)
+ @$(ECHO) == Configuration info ==
+ @$(ECHO)
+ @$(ECHO) FPC.......... $(FPC)
+ @$(ECHO) FPC Version.. $(FPC_VERSION)
+ @$(ECHO) Source CPU... $(CPU_SOURCE)
+ @$(ECHO) Target CPU... $(CPU_TARGET)
+ @$(ECHO) Source OS.... $(OS_SOURCE)
+ @$(ECHO) Target OS.... $(OS_TARGET)
+ @$(ECHO) Full Source.. $(FULL_SOURCE)
+ @$(ECHO) Full Target.. $(FULL_TARGET)
+ @$(ECHO) SourceSuffix. $(SOURCESUFFIX)
+ @$(ECHO) TargetSuffix. $(TARGETSUFFIX)
+ @$(ECHO)
+ @$(ECHO) == Directory info ==
+ @$(ECHO)
+ @$(ECHO) Required pkgs... $(REQUIRE_PACKAGES)
+ @$(ECHO)
+ @$(ECHO) Basedir......... $(BASEDIR)
+ @$(ECHO) FPCDir.......... $(FPCDIR)
+ @$(ECHO) CrossBinDir..... $(CROSSBINDIR)
+ @$(ECHO) UnitsDir........ $(UNITSDIR)
+ @$(ECHO) PackagesDir..... $(PACKAGESDIR)
+ @$(ECHO)
+ @$(ECHO) GCC library..... $(GCCLIBDIR)
+ @$(ECHO) Other library... $(OTHERLIBDIR)
+ @$(ECHO)
+ @$(ECHO) == Tools info ==
+ @$(ECHO)
+ @$(ECHO) As........ $(AS)
+ @$(ECHO) Ld........ $(LD)
+ @$(ECHO) Ar........ $(AR)
+ @$(ECHO) Rc........ $(RC)
+ @$(ECHO)
+ @$(ECHO) Mv........ $(MVPROG)
+ @$(ECHO) Cp........ $(CPPROG)
+ @$(ECHO) Rm........ $(RMPROG)
+ @$(ECHO) GInstall.. $(GINSTALL)
+ @$(ECHO) Echo...... $(ECHO)
+ @$(ECHO) Shell..... $(SHELL)
+ @$(ECHO) Date...... $(DATE)
+ @$(ECHO) FPCMake... $(FPCMAKE)
+ @$(ECHO) PPUMove... $(PPUMOVE)
+ @$(ECHO) Upx....... $(UPXPROG)
+ @$(ECHO) Zip....... $(ZIPPROG)
+ @$(ECHO)
+ @$(ECHO) == Object info ==
+ @$(ECHO)
+ @$(ECHO) Target Loaders........ $(TARGET_LOADERS)
+ @$(ECHO) Target Units.......... $(TARGET_UNITS)
+ @$(ECHO) Target Implicit Units. $(TARGET_IMPLICITUNITS)
+ @$(ECHO) Target Programs....... $(TARGET_PROGRAMS)
+ @$(ECHO) Target Dirs........... $(TARGET_DIRS)
+ @$(ECHO) Target Examples....... $(TARGET_EXAMPLES)
+ @$(ECHO) Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+ @$(ECHO)
+ @$(ECHO) Clean Units......... $(CLEAN_UNITS)
+ @$(ECHO) Clean Files......... $(CLEAN_FILES)
+ @$(ECHO)
+ @$(ECHO) Install Units....... $(INSTALL_UNITS)
+ @$(ECHO) Install Files....... $(INSTALL_FILES)
+ @$(ECHO)
+ @$(ECHO) == Install info ==
+ @$(ECHO)
+ @$(ECHO) DateStr.............. $(DATESTR)
+ @$(ECHO) ZipName.............. $(ZIPNAME)
+ @$(ECHO) ZipPrefix............ $(ZIPPREFIX)
+ @$(ECHO) ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+ @$(ECHO) ZipSuffix............ $(ZIPSUFFIX)
+ @$(ECHO) FullZipName.......... $(FULLZIPNAME)
+ @$(ECHO) Install FPC Package.. $(INSTALL_FPCPACKAGE)
+ @$(ECHO)
+ @$(ECHO) Install base dir..... $(INSTALL_BASEDIR)
+ @$(ECHO) Install binary dir... $(INSTALL_BINDIR)
+ @$(ECHO) Install library dir.. $(INSTALL_LIBDIR)
+ @$(ECHO) Install units dir.... $(INSTALL_UNITDIR)
+ @$(ECHO) Install source dir... $(INSTALL_SOURCEDIR)
+ @$(ECHO) Install doc dir...... $(INSTALL_DOCDIR)
+ @$(ECHO) Install example dir.. $(INSTALL_EXAMPLEDIR)
+ @$(ECHO) Install data dir..... $(INSTALL_DATADIR)
+ @$(ECHO)
+ @$(ECHO) Dist destination dir. $(DIST_DESTDIR)
+ @$(ECHO) Dist zip name........ $(DIST_ZIPNAME)
+ @$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+ fpc_makefile_dirs
+fpc_makefile:
+ $(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+ $(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+all: fpc_all
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall: fpc_distinstall
+zipinstall: fpc_zipinstall
+zipsourceinstall: fpc_zipsourceinstall
+zipexampleinstall: fpc_zipexampleinstall
+zipdistinstall: fpc_zipdistinstall
+clean: fpc_clean
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:
diff --git a/packages/x11/Makefile.fpc b/packages/x11/Makefile.fpc
new file mode 100644
index 0000000000..5b607db2f0
--- /dev/null
+++ b/packages/x11/Makefile.fpc
@@ -0,0 +1,29 @@
+#
+# Makefile.fpc for X11 Bindings
+#
+
+[package]
+name=x11
+version=2.0.0
+
+[target]
+units=x xlib xutil xresource xcms xshm xrender keysym xi xkb xkblib xatom xinerama xv xvlib cursorfont xrandr xf86dga xf86vmode
+
+[require]
+libc=y
+
+[install]
+fpcpackage=y
+
+[default]
+fpcdir=../..
+
+[compiler]
+includedir=src
+sourcedir=src tests
+
+[shared]
+build=n
+
+[rules]
+.NOTPARALLEL:
diff --git a/packages/x11/fpmake.pp b/packages/x11/fpmake.pp
new file mode 100644
index 0000000000..bb3d1215c0
--- /dev/null
+++ b/packages/x11/fpmake.pp
@@ -0,0 +1,101 @@
+{$ifndef ALLPACKAGES}
+{$mode objfpc}{$H+}
+program fpmake;
+
+uses fpmkunit;
+
+Var
+ P : TPackage;
+ T : TTarget;
+begin
+ With Installer do
+ begin
+{$endif ALLPACKAGES}
+
+ P:=AddPackage('x11');
+{$ifdef ALLPACKAGES}
+ P.Directory:='x11';
+{$endif ALLPACKAGES}
+ P.Version:='2.0.0';
+ P.SourcePath.Add('src');
+
+ T:=P.Targets.AddUnit('cursorfont.pp');
+ T:=P.Targets.AddUnit('keysym.pp');
+ T:=P.Targets.AddUnit('xatom.pp');
+ T:=P.Targets.AddUnit('xcms.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xf86dga.pp');
+ with T.Dependencies do
+ begin
+ AddInclude('xf86dga1.inc');
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xf86vmode.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xinerama.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xi.pp');
+ T:=P.Targets.AddUnit('xkblib.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ AddUnit('xkb');
+ end;
+ T:=P.Targets.AddUnit('xkb.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ AddUnit('xi');
+ end;
+ T:=P.Targets.AddUnit('xlib.pp');
+ T:=P.Targets.AddUnit('x.pp');
+ T:=P.Targets.AddUnit('xrandr.pp');
+ with T.Dependencies do
+ begin
+ AddInclude('randr.inc');
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xrender.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xresource.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xshm.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ end;
+ T:=P.Targets.AddUnit('xutil.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ AddUnit('keysym');
+ end;
+ T:=P.Targets.AddUnit('xvlib.pp');
+ with T.Dependencies do
+ begin
+ AddUnit('xlib');
+ AddUnit('xshm');
+ end;
+ T:=P.Targets.AddUnit('xv.pp');
+
+
+{$ifndef ALLPACKAGES}
+ Run;
+ end;
+end.
+{$endif ALLPACKAGES}
diff --git a/packages/x11/src/cursorfont.pp b/packages/x11/src/cursorfont.pp
new file mode 100644
index 0000000000..db71f4f1e1
--- /dev/null
+++ b/packages/x11/src/cursorfont.pp
@@ -0,0 +1,116 @@
+{ $Xorg: cursorfont.h,v 1.4 2001/02/09 02:03:39 xorgcvs Exp $ }
+{
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+}
+
+unit cursorfont;
+
+interface
+
+const
+ XC_num_glyphs = 154;
+ 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;
+
+implementation
+
+end.
diff --git a/packages/x11/src/keysym.pp b/packages/x11/src/keysym.pp
new file mode 100644
index 0000000000..0ab8ccd4ca
--- /dev/null
+++ b/packages/x11/src/keysym.pp
@@ -0,0 +1,2009 @@
+{
+Converted from X11/keysym.h and X11/keysymdef.h
+
+Capital letter consts renamed from XK_... to XKc_...
+ (since Pascal isn't case-sensitive)
+
+i.e.
+C Pascal
+XK_a XK_a
+XK_A XKc_A
+}
+
+Unit keysym;
+
+Interface
+
+{* default keysyms *}
+{$DEFINE XK_MISCELLANY}
+{$DEFINE XK_XKB_KEYS}
+{$DEFINE XK_3270}
+{$DEFINE XK_LATIN1}
+{$DEFINE XK_LATIN2}
+{$DEFINE XK_LATIN3}
+{$DEFINE XK_LATIN4}
+{$DEFINE XK_LATIN8}
+{$DEFINE XK_LATIN9}
+{$DEFINE XK_KATAKANA}
+{$DEFINE XK_ARABIC}
+{$DEFINE XK_CYRILLIC}
+{$DEFINE XK_GREEK}
+{$DEFINE XK_TECHNICAL}
+{$DEFINE XK_SPECIAL}
+{$DEFINE XK_PUBLISHING}
+{$DEFINE XK_APL}
+{$DEFINE XK_HEBREW}
+{$DEFINE XK_THAI}
+{$DEFINE XK_KOREAN}
+{$DEFINE XK_ARMENIAN}
+{$DEFINE XK_GEORGIAN}
+{$DEFINE XK_CAUCASUS}
+{$DEFINE XK_VIETNAMESE}
+{$DEFINE XK_CURRENCY}
+
+Const
+ XK_VoidSymbol = $FFFFFF; { void symbol }
+
+{$IFDEF XK_MISCELLANY}
+{*
+ * TTY Functions, cleverly chosen to map to ascii, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code.
+ *}
+
+ XK_BackSpace = $FF08; { back space, back char }
+ XK_Tab = $FF09;
+ XK_Linefeed = $FF0A; { Linefeed, LF }
+ XK_Clear = $FF0B;
+ XK_Return = $FF0D; { Return, enter }
+ XK_Pause = $FF13; { Pause, hold }
+ XK_Scroll_Lock = $FF14;
+ XK_Sys_Req = $FF15;
+ XK_Escape = $FF1B;
+ XK_Delete = $FFFF; { Delete, rubout }
+
+
+
+{ International & multi-key character composition }
+
+ XK_Multi_key = $FF20; { Multi-key character compose }
+ XK_Codeinput = $FF37;
+ XK_SingleCandidate = $FF3C;
+ XK_MultipleCandidate = $FF3D;
+ XK_PreviousCandidate = $FF3E;
+
+{ Japanese keyboard support }
+
+ XK_Kanji = $FF21; { Kanji, Kanji convert }
+ XK_Muhenkan = $FF22; { Cancel Conversion }
+ XK_Henkan_Mode = $FF23; { Start/Stop Conversion }
+ XK_Henkan = $FF23; { Alias for Henkan_Mode }
+ XK_Romaji = $FF24; { to Romaji }
+ XK_Hiragana = $FF25; { to Hiragana }
+ XK_Katakana = $FF26; { to Katakana }
+ XK_Hiragana_Katakana = $FF27; { Hiragana/Katakana toggle }
+ XK_Zenkaku = $FF28; { to Zenkaku }
+ XK_Hankaku = $FF29; { to Hankaku }
+ XK_Zenkaku_Hankaku = $FF2A; { Zenkaku/Hankaku toggle }
+ XK_Touroku = $FF2B; { Add to Dictionary }
+ XK_Massyo = $FF2C; { Delete from Dictionary }
+ XK_Kana_Lock = $FF2D; { Kana Lock }
+ XK_Kana_Shift = $FF2E; { Kana Shift }
+ XK_Eisu_Shift = $FF2F; { Alphanumeric Shift }
+ XK_Eisu_toggle = $FF30; { Alphanumeric toggle }
+ XK_Kanji_Bangou = $FF37; { Codeinput }
+ XK_Zen_Koho = $FF3D; { Multiple/All Candidate(s) }
+ XK_Mae_Koho = $FF3E; { Previous Candidate }
+
+{ = $FF31 thru = $FF3F are under XK_KOREAN }
+
+{ Cursor control & motion }
+
+ XK_Home = $FF50;
+ XK_Left = $FF51; { Move left, left arrow }
+ XK_Up = $FF52; { Move up, up arrow }
+ XK_Right = $FF53; { Move right, right arrow }
+ XK_Down = $FF54; { Move down, down arrow }
+ XK_Prior = $FF55; { Prior, previous }
+ XK_Page_Up = $FF55;
+ XK_Next = $FF56; { Next }
+ XK_Page_Down = $FF56;
+ XK_End = $FF57; { EOL }
+ XK_Begin = $FF58; { BOL }
+
+
+{ Misc Functions }
+
+ XK_Select = $FF60; { Select, mark }
+ XK_Print = $FF61;
+ XK_Execute = $FF62; { Execute, run, do }
+ XK_Insert = $FF63; { Insert, insert here }
+ XK_Undo = $FF65; { Undo, oops }
+ XK_Redo = $FF66; { redo, again }
+ XK_Menu = $FF67;
+ XK_Find = $FF68; { Find, search }
+ XK_Cancel = $FF69; { Cancel, stop, abort, exit }
+ XK_Help = $FF6A; { Help }
+ XK_Break = $FF6B;
+ XK_Mode_switch = $FF7E; { Character set switch }
+ XK_script_switch = $FF7E; { Alias for mode_switch }
+ XK_Num_Lock = $FF7F;
+
+{ Keypad Functions, keypad numbers cleverly chosen to map to ascii }
+
+ XK_KP_Space = $FF80; { space }
+ XK_KP_Tab = $FF89;
+ XK_KP_Enter = $FF8D; { enter }
+ XK_KP_F1 = $FF91; { PF1, KP_A, ... }
+ XK_KP_F2 = $FF92;
+ XK_KP_F3 = $FF93;
+ XK_KP_F4 = $FF94;
+ XK_KP_Home = $FF95;
+ XK_KP_Left = $FF96;
+ XK_KP_Up = $FF97;
+ XK_KP_Right = $FF98;
+ XK_KP_Down = $FF99;
+ XK_KP_Prior = $FF9A;
+ XK_KP_Page_Up = $FF9A;
+ XK_KP_Next = $FF9B;
+ XK_KP_Page_Down = $FF9B;
+ XK_KP_End = $FF9C;
+ XK_KP_Begin = $FF9D;
+ XK_KP_Insert = $FF9E;
+ XK_KP_Delete = $FF9F;
+ XK_KP_Equal = $FFBD; { equals }
+ XK_KP_Multiply = $FFAA;
+ XK_KP_Add = $FFAB;
+ XK_KP_Separator = $FFAC; { separator, often comma }
+ XK_KP_Subtract = $FFAD;
+ XK_KP_Decimal = $FFAE;
+ XK_KP_Divide = $FFAF;
+
+ XK_KP_0 = $FFB0;
+ XK_KP_1 = $FFB1;
+ XK_KP_2 = $FFB2;
+ XK_KP_3 = $FFB3;
+ XK_KP_4 = $FFB4;
+ XK_KP_5 = $FFB5;
+ XK_KP_6 = $FFB6;
+ XK_KP_7 = $FFB7;
+ XK_KP_8 = $FFB8;
+ XK_KP_9 = $FFB9;
+
+
+
+{*
+ * Auxilliary Functions; note the duplicate definitions for left and right
+ * function keys; Sun keyboards and a few other manufactures have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ *}
+
+ XK_F1 = $FFBE;
+ XK_F2 = $FFBF;
+ XK_F3 = $FFC0;
+ XK_F4 = $FFC1;
+ XK_F5 = $FFC2;
+ XK_F6 = $FFC3;
+ XK_F7 = $FFC4;
+ XK_F8 = $FFC5;
+ XK_F9 = $FFC6;
+ XK_F10 = $FFC7;
+ XK_F11 = $FFC8;
+ XK_L1 = $FFC8;
+ XK_F12 = $FFC9;
+ XK_L2 = $FFC9;
+ XK_F13 = $FFCA;
+ XK_L3 = $FFCA;
+ XK_F14 = $FFCB;
+ XK_L4 = $FFCB;
+ XK_F15 = $FFCC;
+ XK_L5 = $FFCC;
+ XK_F16 = $FFCD;
+ XK_L6 = $FFCD;
+ XK_F17 = $FFCE;
+ XK_L7 = $FFCE;
+ XK_F18 = $FFCF;
+ XK_L8 = $FFCF;
+ XK_F19 = $FFD0;
+ XK_L9 = $FFD0;
+ XK_F20 = $FFD1;
+ XK_L10 = $FFD1;
+ XK_F21 = $FFD2;
+ XK_R1 = $FFD2;
+ XK_F22 = $FFD3;
+ XK_R2 = $FFD3;
+ XK_F23 = $FFD4;
+ XK_R3 = $FFD4;
+ XK_F24 = $FFD5;
+ XK_R4 = $FFD5;
+ XK_F25 = $FFD6;
+ XK_R5 = $FFD6;
+ XK_F26 = $FFD7;
+ XK_R6 = $FFD7;
+ XK_F27 = $FFD8;
+ XK_R7 = $FFD8;
+ XK_F28 = $FFD9;
+ XK_R8 = $FFD9;
+ XK_F29 = $FFDA;
+ XK_R9 = $FFDA;
+ XK_F30 = $FFDB;
+ XK_R10 = $FFDB;
+ XK_F31 = $FFDC;
+ XK_R11 = $FFDC;
+ XK_F32 = $FFDD;
+ XK_R12 = $FFDD;
+ XK_F33 = $FFDE;
+ XK_R13 = $FFDE;
+ XK_F34 = $FFDF;
+ XK_R14 = $FFDF;
+ XK_F35 = $FFE0;
+ XK_R15 = $FFE0;
+
+{ Modifiers }
+
+ XK_Shift_L = $FFE1; { Left shift }
+ XK_Shift_R = $FFE2; { Right shift }
+ XK_Control_L = $FFE3; { Left control }
+ XK_Control_R = $FFE4; { Right control }
+ XK_Caps_Lock = $FFE5; { Caps lock }
+ XK_Shift_Lock = $FFE6; { Shift lock }
+
+ XK_Meta_L = $FFE7; { Left meta }
+ XK_Meta_R = $FFE8; { Right meta }
+ XK_Alt_L = $FFE9; { Left alt }
+ XK_Alt_R = $FFEA; { Right alt }
+ XK_Super_L = $FFEB; { Left super }
+ XK_Super_R = $FFEC; { Right super }
+ XK_Hyper_L = $FFED; { Left hyper }
+ XK_Hyper_R = $FFEE; { Right hyper }
+{$ENDIF} { XK_MISCELLANY }
+
+{*
+ * ISO 9995 Function and Modifier Keys
+ * Byte 3 = = $FE
+ *}
+
+{$IFDEF XK_XKB_KEYS}
+ XK_ISO_Lock = $FE01;
+ XK_ISO_Level2_Latch = $FE02;
+ XK_ISO_Level3_Shift = $FE03;
+ XK_ISO_Level3_Latch = $FE04;
+ XK_ISO_Level3_Lock = $FE05;
+ XK_ISO_Group_Shift = $FF7E; { Alias for mode_switch }
+ XK_ISO_Group_Latch = $FE06;
+ XK_ISO_Group_Lock = $FE07;
+ XK_ISO_Next_Group = $FE08;
+ XK_ISO_Next_Group_Lock = $FE09;
+ XK_ISO_Prev_Group = $FE0A;
+ XK_ISO_Prev_Group_Lock = $FE0B;
+ XK_ISO_First_Group = $FE0C;
+ XK_ISO_First_Group_Lock = $FE0D;
+ XK_ISO_Last_Group = $FE0E;
+ XK_ISO_Last_Group_Lock = $FE0F;
+
+ XK_ISO_Left_Tab = $FE20;
+ XK_ISO_Move_Line_Up = $FE21;
+ XK_ISO_Move_Line_Down = $FE22;
+ XK_ISO_Partial_Line_Up = $FE23;
+ XK_ISO_Partial_Line_Down = $FE24;
+ XK_ISO_Partial_Space_Left = $FE25;
+ XK_ISO_Partial_Space_Right = $FE26;
+ XK_ISO_Set_Margin_Left = $FE27;
+ XK_ISO_Set_Margin_Right = $FE28;
+ XK_ISO_Release_Margin_Left = $FE29;
+ XK_ISO_Release_Margin_Right = $FE2A;
+ XK_ISO_Release_Both_Margins = $FE2B;
+ XK_ISO_Fast_Cursor_Left = $FE2C;
+ XK_ISO_Fast_Cursor_Right = $FE2D;
+ XK_ISO_Fast_Cursor_Up = $FE2E;
+ XK_ISO_Fast_Cursor_Down = $FE2F;
+ XK_ISO_Continuous_Underline = $FE30;
+ XK_ISO_Discontinuous_Underline = $FE31;
+ XK_ISO_Emphasize = $FE32;
+ XK_ISO_Center_Object = $FE33;
+ XK_ISO_Enter = $FE34;
+
+ XK_dead_grave = $FE50;
+ XK_dead_acute = $FE51;
+ XK_dead_circumflex = $FE52;
+ XK_dead_tilde = $FE53;
+ XK_dead_macron = $FE54;
+ XK_dead_breve = $FE55;
+ XK_dead_abovedot = $FE56;
+ XK_dead_diaeresis = $FE57;
+ XK_dead_abovering = $FE58;
+ XK_dead_doubleacute = $FE59;
+ XK_dead_caron = $FE5A;
+ XK_dead_cedilla = $FE5B;
+ XK_dead_ogonek = $FE5C;
+ XK_dead_iota = $FE5D;
+ XK_dead_voiced_sound = $FE5E;
+ XK_dead_semivoiced_sound = $FE5F;
+ XK_dead_belowdot = $FE60;
+ XK_dead_hook = $FE61;
+ XK_dead_horn = $FE62;
+
+ XK_First_Virtual_Screen = $FED0;
+ XK_Prev_Virtual_Screen = $FED1;
+ XK_Next_Virtual_Screen = $FED2;
+ XK_Last_Virtual_Screen = $FED4;
+ XK_Terminate_Server = $FED5;
+
+ XK_AccessX_Enable = $FE70;
+ XK_AccessX_Feedback_Enable = $FE71;
+ XK_RepeatKeys_Enable = $FE72;
+ XK_SlowKeys_Enable = $FE73;
+ XK_BounceKeys_Enable = $FE74;
+ XK_StickyKeys_Enable = $FE75;
+ XK_MouseKeys_Enable = $FE76;
+ XK_MouseKeys_Accel_Enable = $FE77;
+ XK_Overlay1_Enable = $FE78;
+ XK_Overlay2_Enable = $FE79;
+ XK_AudibleBell_Enable = $FE7A;
+
+ XK_Pointer_Left = $FEE0;
+ XK_Pointer_Right = $FEE1;
+ XK_Pointer_Up = $FEE2;
+ XK_Pointer_Down = $FEE3;
+ XK_Pointer_UpLeft = $FEE4;
+ XK_Pointer_UpRight = $FEE5;
+ XK_Pointer_DownLeft = $FEE6;
+ XK_Pointer_DownRight = $FEE7;
+ XK_Pointer_Button_Dflt = $FEE8;
+ XK_Pointer_Button1 = $FEE9;
+ XK_Pointer_Button2 = $FEEA;
+ XK_Pointer_Button3 = $FEEB;
+ XK_Pointer_Button4 = $FEEC;
+ XK_Pointer_Button5 = $FEED;
+ XK_Pointer_DblClick_Dflt = $FEEE;
+ XK_Pointer_DblClick1 = $FEEF;
+ XK_Pointer_DblClick2 = $FEF0;
+ XK_Pointer_DblClick3 = $FEF1;
+ XK_Pointer_DblClick4 = $FEF2;
+ XK_Pointer_DblClick5 = $FEF3;
+ XK_Pointer_Drag_Dflt = $FEF4;
+ XK_Pointer_Drag1 = $FEF5;
+ XK_Pointer_Drag2 = $FEF6;
+ XK_Pointer_Drag3 = $FEF7;
+ XK_Pointer_Drag4 = $FEF8;
+ XK_Pointer_Drag5 = $FEFD;
+
+ XK_Pointer_EnableKeys = $FEF9;
+ XK_Pointer_Accelerate = $FEFA;
+ XK_Pointer_DfltBtnNext = $FEFB;
+ XK_Pointer_DfltBtnPrev = $FEFC;
+
+{$ENDIF}
+
+{*
+ * 3270 Terminal Keys
+ * Byte 3 = = $FD
+ *}
+
+{$IFDEF XK_3270}
+ XK_3270_Duplicate = $FD01;
+ XK_3270_FieldMark = $FD02;
+ XK_3270_Right2 = $FD03;
+ XK_3270_Left2 = $FD04;
+ XK_3270_BackTab = $FD05;
+ XK_3270_EraseEOF = $FD06;
+ XK_3270_EraseInput = $FD07;
+ XK_3270_Reset = $FD08;
+ XK_3270_Quit = $FD09;
+ XK_3270_PA1 = $FD0A;
+ XK_3270_PA2 = $FD0B;
+ XK_3270_PA3 = $FD0C;
+ XK_3270_Test = $FD0D;
+ XK_3270_Attn = $FD0E;
+ XK_3270_CursorBlink = $FD0F;
+ XK_3270_AltCursor = $FD10;
+ XK_3270_KeyClick = $FD11;
+ XK_3270_Jump = $FD12;
+ XK_3270_Ident = $FD13;
+ XK_3270_Rule = $FD14;
+ XK_3270_Copy = $FD15;
+ XK_3270_Play = $FD16;
+ XK_3270_Setup = $FD17;
+ XK_3270_Record = $FD18;
+ XK_3270_ChangeScreen = $FD19;
+ XK_3270_DeleteWord = $FD1A;
+ XK_3270_ExSelect = $FD1B;
+ XK_3270_CursorSelect = $FD1C;
+ XK_3270_PrintScreen = $FD1D;
+ XK_3270_Enter = $FD1E;
+{$ENDIF}
+
+{*
+ * Latin 1
+ * Byte 3 = 0
+ *}
+{$IFDEF XK_LATIN1}
+ XK_space = $020;
+ XK_exclam = $021;
+ XK_quotedbl = $022;
+ XK_numbersign = $023;
+ XK_dollar = $024;
+ XK_percent = $025;
+ XK_ampersand = $026;
+ XK_apostrophe = $027;
+ XK_quoteright = $027; { deprecated }
+ XK_parenleft = $028;
+ XK_parenright = $029;
+ XK_asterisk = $02a;
+ XK_plus = $02b;
+ XK_comma = $02c;
+ XK_minus = $02d;
+ XK_period = $02e;
+ XK_slash = $02f;
+ XK_0 = $030;
+ XK_1 = $031;
+ XK_2 = $032;
+ XK_3 = $033;
+ XK_4 = $034;
+ XK_5 = $035;
+ XK_6 = $036;
+ XK_7 = $037;
+ XK_8 = $038;
+ XK_9 = $039;
+ XK_colon = $03a;
+ XK_semicolon = $03b;
+ XK_less = $03c;
+ XK_equal = $03d;
+ XK_greater = $03e;
+ XK_question = $03f;
+ XK_at = $040;
+ XKc_A = $041;
+ XKc_B = $042;
+ XKc_C = $043;
+ XKc_D = $044;
+ XKc_E = $045;
+ XKc_F = $046;
+ XKc_G = $047;
+ XKc_H = $048;
+ XKc_I = $049;
+ XKc_J = $04a;
+ XKc_K = $04b;
+ XKc_L = $04c;
+ XKc_M = $04d;
+ XKc_N = $04e;
+ XKc_O = $04f;
+ XKc_P = $050;
+ XKc_Q = $051;
+ XKc_R = $052;
+ XKc_S = $053;
+ XKc_T = $054;
+ XKc_U = $055;
+ XKc_V = $056;
+ XKc_W = $057;
+ XKc_X = $058;
+ XKc_Y = $059;
+ XKc_Z = $05a;
+ XK_bracketleft = $05b;
+ XK_backslash = $05c;
+ XK_bracketright = $05d;
+ XK_asciicircum = $05e;
+ XK_underscore = $05f;
+ XK_grave = $060;
+ XK_quoteleft = $060; { deprecated }
+ XK_a = $061;
+ XK_b = $062;
+ XK_c = $063;
+ XK_d = $064;
+ XK_e = $065;
+ XK_f = $066;
+ XK_g = $067;
+ XK_h = $068;
+ XK_i = $069;
+ XK_j = $06a;
+ XK_k = $06b;
+ XK_l = $06c;
+ XK_m = $06d;
+ XK_n = $06e;
+ XK_o = $06f;
+ XK_p = $070;
+ XK_q = $071;
+ XK_r = $072;
+ XK_s = $073;
+ XK_t = $074;
+ XK_u = $075;
+ XK_v = $076;
+ XK_w = $077;
+ XK_x = $078;
+ XK_y = $079;
+ XK_z = $07a;
+ XK_braceleft = $07b;
+ XK_bar = $07c;
+ XK_braceright = $07d;
+ XK_asciitilde = $07e;
+
+ XK_nobreakspace = $0a0;
+ XK_exclamdown = $0a1;
+ XK_cent = $0a2;
+ XK_sterling = $0a3;
+ XK_currency = $0a4;
+ XK_yen = $0a5;
+ XK_brokenbar = $0a6;
+ XK_section = $0a7;
+ XK_diaeresis = $0a8;
+ XK_copyright = $0a9;
+ XK_ordfeminine = $0aa;
+ XK_guillemotleft = $0ab; { left angle quotation mark }
+ XK_notsign = $0ac;
+ XK_hyphen = $0ad;
+ XK_registered = $0ae;
+ XK_macron = $0af;
+ XK_degree = $0b0;
+ XK_plusminus = $0b1;
+ XK_twosuperior = $0b2;
+ XK_threesuperior = $0b3;
+ XK_acute = $0b4;
+ XK_mu = $0b5;
+ XK_paragraph = $0b6;
+ XK_periodcentered = $0b7;
+ XK_cedilla = $0b8;
+ XK_onesuperior = $0b9;
+ XK_masculine = $0ba;
+ XK_guillemotright = $0bb; { right angle quotation mark }
+ XK_onequarter = $0bc;
+ XK_onehalf = $0bd;
+ XK_threequarters = $0be;
+ XK_questiondown = $0bf;
+ XKc_Agrave = $0c0;
+ XKc_Aacute = $0c1;
+ XKc_Acircumflex = $0c2;
+ XKc_Atilde = $0c3;
+ XKc_Adiaeresis = $0c4;
+ XKc_Aring = $0c5;
+ XKc_AE = $0c6;
+ XKc_Ccedilla = $0c7;
+ XKc_Egrave = $0c8;
+ XKc_Eacute = $0c9;
+ XKc_Ecircumflex = $0ca;
+ XKc_Ediaeresis = $0cb;
+ XKc_Igrave = $0cc;
+ XKc_Iacute = $0cd;
+ XKc_Icircumflex = $0ce;
+ XKc_Idiaeresis = $0cf;
+ XKc_ETH = $0d0;
+ XKc_Ntilde = $0d1;
+ XKc_Ograve = $0d2;
+ XKc_Oacute = $0d3;
+ XKc_Ocircumflex = $0d4;
+ XKc_Otilde = $0d5;
+ XKc_Odiaeresis = $0d6;
+ XK_multiply = $0d7;
+ XKc_Ooblique = $0d8;
+ XKc_Oslash = XKc_Ooblique;
+ XKc_Ugrave = $0d9;
+ XKc_Uacute = $0da;
+ XKc_Ucircumflex = $0db;
+ XKc_Udiaeresis = $0dc;
+ XKc_Yacute = $0dd;
+ XKc_THORN = $0de;
+ XK_ssharp = $0df;
+ XK_agrave = $0e0;
+ XK_aacute = $0e1;
+ XK_acircumflex = $0e2;
+ XK_atilde = $0e3;
+ XK_adiaeresis = $0e4;
+ XK_aring = $0e5;
+ XK_ae = $0e6;
+ XK_ccedilla = $0e7;
+ XK_egrave = $0e8;
+ XK_eacute = $0e9;
+ XK_ecircumflex = $0ea;
+ XK_ediaeresis = $0eb;
+ XK_igrave = $0ec;
+ XK_iacute = $0ed;
+ XK_icircumflex = $0ee;
+ XK_idiaeresis = $0ef;
+ XK_eth = $0f0;
+ XK_ntilde = $0f1;
+ XK_ograve = $0f2;
+ XK_oacute = $0f3;
+ XK_ocircumflex = $0f4;
+ XK_otilde = $0f5;
+ XK_odiaeresis = $0f6;
+ XK_division = $0f7;
+ XK_oslash = $0f8;
+ XK_ooblique = XK_oslash;
+ XK_ugrave = $0f9;
+ XK_uacute = $0fa;
+ XK_ucircumflex = $0fb;
+ XK_udiaeresis = $0fc;
+ XK_yacute = $0fd;
+ XK_thorn = $0fe;
+ XK_ydiaeresis = $0ff;
+{$ENDIF} { XK_LATIN1 }
+
+{*
+ * Latin 2
+ * Byte 3 = 1
+ *}
+
+{$IFDEF XK_LATIN2}
+ XKc_Aogonek = $1a1;
+ XK_breve = $1a2;
+ XKc_Lstroke = $1a3;
+ XKc_Lcaron = $1a5;
+ XKc_Sacute = $1a6;
+ XKc_Scaron = $1a9;
+ XKc_Scedilla = $1aa;
+ XKc_Tcaron = $1ab;
+ XKc_Zacute = $1ac;
+ XKc_Zcaron = $1ae;
+ XKc_Zabovedot = $1af;
+ XK_aogonek = $1b1;
+ XK_ogonek = $1b2;
+ XK_lstroke = $1b3;
+ XK_lcaron = $1b5;
+ XK_sacute = $1b6;
+ XK_caron = $1b7;
+ XK_scaron = $1b9;
+ XK_scedilla = $1ba;
+ XK_tcaron = $1bb;
+ XK_zacute = $1bc;
+ XK_doubleacute = $1bd;
+ XK_zcaron = $1be;
+ XK_zabovedot = $1bf;
+ XKc_Racute = $1c0;
+ XKc_Abreve = $1c3;
+ XKc_Lacute = $1c5;
+ XKc_Cacute = $1c6;
+ XKc_Ccaron = $1c8;
+ XKc_Eogonek = $1ca;
+ XKc_Ecaron = $1cc;
+ XKc_Dcaron = $1cf;
+ XKc_Dstroke = $1d0;
+ XKc_Nacute = $1d1;
+ XKc_Ncaron = $1d2;
+ XKc_Odoubleacute = $1d5;
+ XKc_Rcaron = $1d8;
+ XKc_Uring = $1d9;
+ XKc_Udoubleacute = $1db;
+ XKc_Tcedilla = $1de;
+ XK_racute = $1e0;
+ XK_abreve = $1e3;
+ XK_lacute = $1e5;
+ XK_cacute = $1e6;
+ XK_ccaron = $1e8;
+ XK_eogonek = $1ea;
+ XK_ecaron = $1ec;
+ XK_dcaron = $1ef;
+ XK_dstroke = $1f0;
+ XK_nacute = $1f1;
+ XK_ncaron = $1f2;
+ XK_odoubleacute = $1f5;
+ XK_udoubleacute = $1fb;
+ XK_rcaron = $1f8;
+ XK_uring = $1f9;
+ XK_tcedilla = $1fe;
+ XK_abovedot = $1ff;
+{$ENDIF} { XK_LATIN2 }
+
+{*
+ * Latin 3
+ * Byte 3 = 2
+ *}
+
+{$IFDEF XK_LATIN3}
+ XKc_Hstroke = $2a1;
+ XKc_Hcircumflex = $2a6;
+ XKc_Iabovedot = $2a9;
+ XKc_Gbreve = $2ab;
+ XKc_Jcircumflex = $2ac;
+ XK_hstroke = $2b1;
+ XK_hcircumflex = $2b6;
+ XK_idotless = $2b9;
+ XK_gbreve = $2bb;
+ XK_jcircumflex = $2bc;
+ XKc_Cabovedot = $2c5;
+ XKc_Ccircumflex = $2c6;
+ XKc_Gabovedot = $2d5;
+ XKc_Gcircumflex = $2d8;
+ XKc_Ubreve = $2dd;
+ XKc_Scircumflex = $2de;
+ XK_cabovedot = $2e5;
+ XK_ccircumflex = $2e6;
+ XK_gabovedot = $2f5;
+ XK_gcircumflex = $2f8;
+ XK_ubreve = $2fd;
+ XK_scircumflex = $2fe;
+{$ENDIF} { XK_LATIN3 }
+
+
+{*
+ * Latin 4
+ * Byte 3 = 3
+ *}
+
+{$IFDEF XK_LATIN4}
+ XK_kra = $3a2;
+ XK_kappa = $3a2;{ deprecated }
+ XKc_Rcedilla = $3a3;
+ XKc_Itilde = $3a5;
+ XKc_Lcedilla = $3a6;
+ XKc_Emacron = $3aa;
+ XKc_Gcedilla = $3ab;
+ XKc_Tslash = $3ac;
+ XK_rcedilla = $3b3;
+ XK_itilde = $3b5;
+ XK_lcedilla = $3b6;
+ XK_emacron = $3ba;
+ XK_gcedilla = $3bb;
+ XK_tslash = $3bc;
+ XKc_ENG = $3bd;
+ XK_eng = $3bf;
+ XKc_Amacron = $3c0;
+ XKc_Iogonek = $3c7;
+ XKc_Eabovedot = $3cc;
+ XKc_Imacron = $3cf;
+ XKc_Ncedilla = $3d1;
+ XKc_Omacron = $3d2;
+ XKc_Kcedilla = $3d3;
+ XKc_Uogonek = $3d9;
+ XKc_Utilde = $3dd;
+ XKc_Umacron = $3de;
+ XK_amacron = $3e0;
+ XK_iogonek = $3e7;
+ XK_eabovedot = $3ec;
+ XK_imacron = $3ef;
+ XK_ncedilla = $3f1;
+ XK_omacron = $3f2;
+ XK_kcedilla = $3f3;
+ XK_uogonek = $3f9;
+ XK_utilde = $3fd;
+ XK_umacron = $3fe;
+{$ENDIF} { XK_LATIN4 }
+
+{*
+ * Latin-8
+ * Byte 3 = 18
+ *}
+{$IFDEF XK_LATIN8}
+ XKc_Babovedot = $12a1;
+ XK_babovedot = $12a2;
+ XKc_Dabovedot = $12a6;
+ XKc_Wgrave = $12a8;
+ XKc_Wacute = $12aa;
+ XK_dabovedot = $12ab;
+ XKc_Ygrave = $12ac;
+ XKc_Fabovedot = $12b0;
+ XK_fabovedot = $12b1;
+ XKc_Mabovedot = $12b4;
+ XK_mabovedot = $12b5;
+ XKc_Pabovedot = $12b7;
+ XK_wgrave = $12b8;
+ XK_pabovedot = $12b9;
+ XK_wacute = $12ba;
+ XKc_Sabovedot = $12bb;
+ XK_ygrave = $12bc;
+ XKc_Wdiaeresis = $12bd;
+ XK_wdiaeresis = $12be;
+ XK_sabovedot = $12bf;
+ XKc_Wcircumflex = $12d0;
+ XKc_Tabovedot = $12d7;
+ XKc_Ycircumflex = $12de;
+ XK_wcircumflex = $12f0;
+ XK_tabovedot = $12f7;
+ XK_ycircumflex = $12fe;
+{$ENDIF} { XK_LATIN8 }
+
+{*
+ * Latin-9 (a.k.a. Latin-0)
+ * Byte 3 = 19
+ *}
+
+{$IFDEF XK_LATIN9}
+ XKc_OE = $13bc;
+ XK_oe = $13bd;
+ XKc_Ydiaeresis = $13be;
+{$ENDIF} { XK_LATIN9 }
+
+{*
+ * Katakana
+ * Byte 3 = 4
+ *}
+
+{$IFDEF XK_KATAKANA}
+ XK_overline = $47e;
+ XK_kana_fullstop = $4a1;
+ XK_kana_openingbracket = $4a2;
+ XK_kana_closingbracket = $4a3;
+ XK_kana_comma = $4a4;
+ XK_kana_conjunctive = $4a5;
+ XK_kana_middledot = $4a5; { deprecated }
+ XKc_kana_WO = $4a6;
+ XK_kana_a = $4a7;
+ XK_kana_i = $4a8;
+ XK_kana_u = $4a9;
+ XK_kana_e = $4aa;
+ XK_kana_o = $4ab;
+ XK_kana_ya = $4ac;
+ XK_kana_yu = $4ad;
+ XK_kana_yo = $4ae;
+ XK_kana_tsu = $4af;
+ XK_kana_tu = $4af; { deprecated }
+ XK_prolongedsound = $4b0;
+ XKc_kana_A = $4b1;
+ XKc_kana_I = $4b2;
+ XKc_kana_U = $4b3;
+ XKc_kana_E = $4b4;
+ XKc_kana_O = $4b5;
+ XKc_kana_KA = $4b6;
+ XKc_kana_KI = $4b7;
+ XKc_kana_KU = $4b8;
+ XKc_kana_KE = $4b9;
+ XKc_kana_KO = $4ba;
+ XKc_kana_SA = $4bb;
+ XKc_kana_SHI = $4bc;
+ XKc_kana_SU = $4bd;
+ XKc_kana_SE = $4be;
+ XKc_kana_SO = $4bf;
+ XKc_kana_TA = $4c0;
+ XKc_kana_CHI = $4c1;
+ XKc_kana_TI = $4c1; { deprecated }
+ XKc_kana_TSU = $4c2;
+ XKc_kana_TU = $4c2; { deprecated }
+ XKc_kana_TE = $4c3;
+ XKc_kana_TO = $4c4;
+ XKc_kana_NA = $4c5;
+ XKc_kana_NI = $4c6;
+ XKc_kana_NU = $4c7;
+ XKc_kana_NE = $4c8;
+ XKc_kana_NO = $4c9;
+ XKc_kana_HA = $4ca;
+ XKc_kana_HI = $4cb;
+ XKc_kana_FU = $4cc;
+ XKc_kana_HU = $4cc; { deprecated }
+ XKc_kana_HE = $4cd;
+ XKc_kana_HO = $4ce;
+ XKc_kana_MA = $4cf;
+ XKc_kana_MI = $4d0;
+ XKc_kana_MU = $4d1;
+ XKc_kana_ME = $4d2;
+ XKc_kana_MO = $4d3;
+ XKc_kana_YA = $4d4;
+ XKc_kana_YU = $4d5;
+ XKc_kana_YO = $4d6;
+ XKc_kana_RA = $4d7;
+ XKc_kana_RI = $4d8;
+ XKc_kana_RU = $4d9;
+ XKc_kana_RE = $4da;
+ XKc_kana_RO = $4db;
+ XKc_kana_WA = $4dc;
+ XKc_kana_N = $4dd;
+ XK_voicedsound = $4de;
+ XK_semivoicedsound = $4df;
+ XK_kana_switch = $FF7E; { Alias for mode_switch }
+{$ENDIF} { XK_KATAKANA }
+
+{*
+ * Arabic
+ * Byte 3 = 5
+ *}
+
+{$IFDEF XK_ARABIC}
+ XK_Farsi_0 = $590;
+ XK_Farsi_1 = $591;
+ XK_Farsi_2 = $592;
+ XK_Farsi_3 = $593;
+ XK_Farsi_4 = $594;
+ XK_Farsi_5 = $595;
+ XK_Farsi_6 = $596;
+ XK_Farsi_7 = $597;
+ XK_Farsi_8 = $598;
+ XK_Farsi_9 = $599;
+ XK_Arabic_percent = $5a5;
+ XK_Arabic_superscript_alef = $5a6;
+ XK_Arabic_tteh = $5a7;
+ XK_Arabic_peh = $5a8;
+ XK_Arabic_tcheh = $5a9;
+ XK_Arabic_ddal = $5aa;
+ XK_Arabic_rreh = $5ab;
+ XK_Arabic_comma = $5ac;
+ XK_Arabic_fullstop = $5ae;
+ XK_Arabic_0 = $5b0;
+ XK_Arabic_1 = $5b1;
+ XK_Arabic_2 = $5b2;
+ XK_Arabic_3 = $5b3;
+ XK_Arabic_4 = $5b4;
+ XK_Arabic_5 = $5b5;
+ XK_Arabic_6 = $5b6;
+ XK_Arabic_7 = $5b7;
+ XK_Arabic_8 = $5b8;
+ XK_Arabic_9 = $5b9;
+ XK_Arabic_semicolon = $5bb;
+ XK_Arabic_question_mark = $5bf;
+ XK_Arabic_hamza = $5c1;
+ XK_Arabic_maddaonalef = $5c2;
+ XK_Arabic_hamzaonalef = $5c3;
+ XK_Arabic_hamzaonwaw = $5c4;
+ XK_Arabic_hamzaunderalef = $5c5;
+ XK_Arabic_hamzaonyeh = $5c6;
+ XK_Arabic_alef = $5c7;
+ XK_Arabic_beh = $5c8;
+ XK_Arabic_tehmarbuta = $5c9;
+ XK_Arabic_teh = $5ca;
+ XK_Arabic_theh = $5cb;
+ XK_Arabic_jeem = $5cc;
+ XK_Arabic_hah = $5cd;
+ XK_Arabic_khah = $5ce;
+ XK_Arabic_dal = $5cf;
+ XK_Arabic_thal = $5d0;
+ XK_Arabic_ra = $5d1;
+ XK_Arabic_zain = $5d2;
+ XK_Arabic_seen = $5d3;
+ XK_Arabic_sheen = $5d4;
+ XK_Arabic_sad = $5d5;
+ XK_Arabic_dad = $5d6;
+ XK_Arabic_tah = $5d7;
+ XK_Arabic_zah = $5d8;
+ XK_Arabic_ain = $5d9;
+ XK_Arabic_ghain = $5da;
+ XK_Arabic_tatweel = $5e0;
+ XK_Arabic_feh = $5e1;
+ XK_Arabic_qaf = $5e2;
+ XK_Arabic_kaf = $5e3;
+ XK_Arabic_lam = $5e4;
+ XK_Arabic_meem = $5e5;
+ XK_Arabic_noon = $5e6;
+ XK_Arabic_ha = $5e7;
+ XK_Arabic_heh = $5e7; { deprecated }
+ XK_Arabic_waw = $5e8;
+ XK_Arabic_alefmaksura = $5e9;
+ XK_Arabic_yeh = $5ea;
+ XK_Arabic_fathatan = $5eb;
+ XK_Arabic_dammatan = $5ec;
+ XK_Arabic_kasratan = $5ed;
+ XK_Arabic_fatha = $5ee;
+ XK_Arabic_damma = $5ef;
+ XK_Arabic_kasra = $5f0;
+ XK_Arabic_shadda = $5f1;
+ XK_Arabic_sukun = $5f2;
+ XK_Arabic_madda_above = $5f3;
+ XK_Arabic_hamza_above = $5f4;
+ XK_Arabic_hamza_below = $5f5;
+ XK_Arabic_jeh = $5f6;
+ XK_Arabic_veh = $5f7;
+ XK_Arabic_keheh = $5f8;
+ XK_Arabic_gaf = $5f9;
+ XK_Arabic_noon_ghunna = $5fa;
+ XK_Arabic_heh_doachashmee = $5fb;
+ XK_Farsi_yeh = $5fc;
+ XK_Arabic_farsi_yeh = XK_Farsi_yeh;
+ XK_Arabic_yeh_baree = $5fd;
+ XK_Arabic_heh_goal = $5fe;
+ XK_Arabic_switch = $FF7E; { Alias for mode_switch }
+{$ENDIF} { XK_ARABIC }
+
+{*
+ * Cyrillic
+ * Byte 3 = 6
+ *}
+{$IFDEF XK_CYRILLIC}
+ XKc_Cyrillic_GHE_bar = $680;
+ XK_Cyrillic_ghe_bar = $690;
+ XKc_Cyrillic_ZHE_descender = $681;
+ XK_Cyrillic_zhe_descender = $691;
+ XKc_Cyrillic_KA_descender = $682;
+ XK_Cyrillic_ka_descender = $692;
+ XKc_Cyrillic_KA_vertstroke = $683;
+ XK_Cyrillic_ka_vertstroke = $693;
+ XKc_Cyrillic_EN_descender = $684;
+ XK_Cyrillic_en_descender = $694;
+ XKc_Cyrillic_U_straight = $685;
+ XK_Cyrillic_u_straight = $695;
+ XKc_Cyrillic_U_straight_bar = $686;
+ XK_Cyrillic_u_straight_bar = $696;
+ XKc_Cyrillic_HA_descender = $687;
+ XK_Cyrillic_ha_descender = $697;
+ XKc_Cyrillic_CHE_descender = $688;
+ XK_Cyrillic_che_descender = $698;
+ XKc_Cyrillic_CHE_vertstroke = $689;
+ XK_Cyrillic_che_vertstroke = $699;
+ XKc_Cyrillic_SHHA = $68a;
+ XK_Cyrillic_shha = $69a;
+
+ XKc_Cyrillic_SCHWA = $68c;
+ XK_Cyrillic_schwa = $69c;
+ XKc_Cyrillic_I_macron = $68d;
+ XK_Cyrillic_i_macron = $69d;
+ XKc_Cyrillic_O_bar = $68e;
+ XK_Cyrillic_o_bar = $69e;
+ XKc_Cyrillic_U_macron = $68f;
+ XK_Cyrillic_u_macron = $69f;
+
+ XK_Serbian_dje = $6a1;
+ XK_Macedonia_gje = $6a2;
+ XK_Cyrillic_io = $6a3;
+ XK_Ukrainian_ie = $6a4;
+ XK_Ukranian_je = $6a4; { deprecated }
+ XK_Macedonia_dse = $6a5;
+ XK_Ukrainian_i = $6a6;
+ XK_Ukranian_i = $6a6; { deprecated }
+ XK_Ukrainian_yi = $6a7;
+ XK_Ukranian_yi = $6a7; { deprecated }
+ XK_Cyrillic_je = $6a8;
+ XK_Serbian_je = $6a8; { deprecated }
+ XK_Cyrillic_lje = $6a9;
+ XK_Serbian_lje = $6a9; { deprecated }
+ XK_Cyrillic_nje = $6aa;
+ XK_Serbian_nje = $6aa; { deprecated }
+ XK_Serbian_tshe = $6ab;
+ XK_Macedonia_kje = $6ac;
+ XK_Ukrainian_ghe_with_upturn = $6ad;
+ XK_Byelorussian_shortu = $6ae;
+ XK_Cyrillic_dzhe = $6af;
+ XK_Serbian_dze = $6af; { deprecated }
+ XK_numerosign = $6b0;
+ XKc_Serbian_DJE = $6b1;
+ XKc_Macedonia_GJE = $6b2;
+ XKc_Cyrillic_IO = $6b3;
+ XKc_Ukrainian_IE = $6b4;
+ XKc_Ukranian_JE = $6b4; { deprecated }
+ XKc_Macedonia_DSE = $6b5;
+ XKc_Ukrainian_I = $6b6;
+ XKc_Ukranian_I = $6b6; { deprecated }
+ XKc_Ukrainian_YI = $6b7;
+ XKc_Ukranian_YI = $6b7; { deprecated }
+ XKc_Cyrillic_JE = $6b8;
+ XKc_Serbian_JE = $6b8; { deprecated }
+ XKc_Cyrillic_LJE = $6b9;
+ XKc_Serbian_LJE = $6b9; { deprecated }
+ XKc_Cyrillic_NJE = $6ba;
+ XKc_Serbian_NJE = $6ba; { deprecated }
+ XKc_Serbian_TSHE = $6bb;
+ XKc_Macedonia_KJE = $6bc;
+ XKc_Ukrainian_GHE_WITH_UPTURN = $6bd;
+ XKc_Byelorussian_SHORTU = $6be;
+ XKc_Cyrillic_DZHE = $6bf;
+ XKc_Serbian_DZE = $6bf; { deprecated }
+ XK_Cyrillic_yu = $6c0;
+ XK_Cyrillic_a = $6c1;
+ XK_Cyrillic_be = $6c2;
+ XK_Cyrillic_tse = $6c3;
+ XK_Cyrillic_de = $6c4;
+ XK_Cyrillic_ie = $6c5;
+ XK_Cyrillic_ef = $6c6;
+ XK_Cyrillic_ghe = $6c7;
+ XK_Cyrillic_ha = $6c8;
+ XK_Cyrillic_i = $6c9;
+ XK_Cyrillic_shorti = $6ca;
+ XK_Cyrillic_ka = $6cb;
+ XK_Cyrillic_el = $6cc;
+ XK_Cyrillic_em = $6cd;
+ XK_Cyrillic_en = $6ce;
+ XK_Cyrillic_o = $6cf;
+ XK_Cyrillic_pe = $6d0;
+ XK_Cyrillic_ya = $6d1;
+ XK_Cyrillic_er = $6d2;
+ XK_Cyrillic_es = $6d3;
+ XK_Cyrillic_te = $6d4;
+ XK_Cyrillic_u = $6d5;
+ XK_Cyrillic_zhe = $6d6;
+ XK_Cyrillic_ve = $6d7;
+ XK_Cyrillic_softsign = $6d8;
+ XK_Cyrillic_yeru = $6d9;
+ XK_Cyrillic_ze = $6da;
+ XK_Cyrillic_sha = $6db;
+ XK_Cyrillic_e = $6dc;
+ XK_Cyrillic_shcha = $6dd;
+ XK_Cyrillic_che = $6de;
+ XK_Cyrillic_hardsign = $6df;
+ XKc_Cyrillic_YU = $6e0;
+ XKc_Cyrillic_A = $6e1;
+ XKc_Cyrillic_BE = $6e2;
+ XKc_Cyrillic_TSE = $6e3;
+ XKc_Cyrillic_DE = $6e4;
+ XKc_Cyrillic_IE = $6e5;
+ XKc_Cyrillic_EF = $6e6;
+ XKc_Cyrillic_GHE = $6e7;
+ XKc_Cyrillic_HA = $6e8;
+ XKc_Cyrillic_I = $6e9;
+ XKc_Cyrillic_SHORTI = $6ea;
+ XKc_Cyrillic_KA = $6eb;
+ XKc_Cyrillic_EL = $6ec;
+ XKc_Cyrillic_EM = $6ed;
+ XKc_Cyrillic_EN = $6ee;
+ XKc_Cyrillic_O = $6ef;
+ XKc_Cyrillic_PE = $6f0;
+ XKc_Cyrillic_YA = $6f1;
+ XKc_Cyrillic_ER = $6f2;
+ XKc_Cyrillic_ES = $6f3;
+ XKc_Cyrillic_TE = $6f4;
+ XKc_Cyrillic_U = $6f5;
+ XKc_Cyrillic_ZHE = $6f6;
+ XKc_Cyrillic_VE = $6f7;
+ XKc_Cyrillic_SOFTSIGN = $6f8;
+ XKc_Cyrillic_YERU = $6f9;
+ XKc_Cyrillic_ZE = $6fa;
+ XKc_Cyrillic_SHA = $6fb;
+ XKc_Cyrillic_E = $6fc;
+ XKc_Cyrillic_SHCHA = $6fd;
+ XKc_Cyrillic_CHE = $6fe;
+ XKc_Cyrillic_HARDSIGN = $6ff;
+{$ENDIF} { XK_CYRILLIC }
+
+{*
+ * Greek
+ * Byte 3 = 7
+ *}
+
+{$IFDEF XK_GREEK}
+ XKc_Greek_ALPHAaccent = $7a1;
+ XKc_Greek_EPSILONaccent = $7a2;
+ XKc_Greek_ETAaccent = $7a3;
+ XKc_Greek_IOTAaccent = $7a4;
+ XKc_Greek_IOTAdieresis = $7a5;
+ XKc_Greek_IOTAdiaeresis = XKc_Greek_IOTAdieresis; { old typo }
+ XKc_Greek_OMICRONaccent = $7a7;
+ XKc_Greek_UPSILONaccent = $7a8;
+ XKc_Greek_UPSILONdieresis = $7a9;
+ XKc_Greek_OMEGAaccent = $7ab;
+ XK_Greek_accentdieresis = $7ae;
+ XK_Greek_horizbar = $7af;
+ XK_Greek_alphaaccent = $7b1;
+ XK_Greek_epsilonaccent = $7b2;
+ XK_Greek_etaaccent = $7b3;
+ XK_Greek_iotaaccent = $7b4;
+ XK_Greek_iotadieresis = $7b5;
+ XK_Greek_iotaaccentdieresis = $7b6;
+ XK_Greek_omicronaccent = $7b7;
+ XK_Greek_upsilonaccent = $7b8;
+ XK_Greek_upsilondieresis = $7b9;
+ XK_Greek_upsilonaccentdieresis = $7ba;
+ XK_Greek_omegaaccent = $7bb;
+ XKc_Greek_ALPHA = $7c1;
+ XKc_Greek_BETA = $7c2;
+ XKc_Greek_GAMMA = $7c3;
+ XKc_Greek_DELTA = $7c4;
+ XKc_Greek_EPSILON = $7c5;
+ XKc_Greek_ZETA = $7c6;
+ XKc_Greek_ETA = $7c7;
+ XKc_Greek_THETA = $7c8;
+ XKc_Greek_IOTA = $7c9;
+ XKc_Greek_KAPPA = $7ca;
+ XKc_Greek_LAMDA = $7cb;
+ XKc_Greek_LAMBDA = $7cb;
+ XKc_Greek_MU = $7cc;
+ XKc_Greek_NU = $7cd;
+ XKc_Greek_XI = $7ce;
+ XKc_Greek_OMICRON = $7cf;
+ XKc_Greek_PI = $7d0;
+ XKc_Greek_RHO = $7d1;
+ XKc_Greek_SIGMA = $7d2;
+ XKc_Greek_TAU = $7d4;
+ XKc_Greek_UPSILON = $7d5;
+ XKc_Greek_PHI = $7d6;
+ XKc_Greek_CHI = $7d7;
+ XKc_Greek_PSI = $7d8;
+ XKc_Greek_OMEGA = $7d9;
+ XK_Greek_alpha = $7e1;
+ XK_Greek_beta = $7e2;
+ XK_Greek_gamma = $7e3;
+ XK_Greek_delta = $7e4;
+ XK_Greek_epsilon = $7e5;
+ XK_Greek_zeta = $7e6;
+ XK_Greek_eta = $7e7;
+ XK_Greek_theta = $7e8;
+ XK_Greek_iota = $7e9;
+ XK_Greek_kappa = $7ea;
+ XK_Greek_lamda = $7eb;
+ XK_Greek_lambda = $7eb;
+ XK_Greek_mu = $7ec;
+ XK_Greek_nu = $7ed;
+ XK_Greek_xi = $7ee;
+ XK_Greek_omicron = $7ef;
+ XK_Greek_pi = $7f0;
+ XK_Greek_rho = $7f1;
+ XK_Greek_sigma = $7f2;
+ XK_Greek_finalsmallsigma = $7f3;
+ XK_Greek_tau = $7f4;
+ XK_Greek_upsilon = $7f5;
+ XK_Greek_phi = $7f6;
+ XK_Greek_chi = $7f7;
+ XK_Greek_psi = $7f8;
+ XK_Greek_omega = $7f9;
+ XK_Greek_switch = $FF7E; { Alias for mode_switch }
+{$ENDIF} { XK_GREEK }
+
+{*
+ * Technical
+ * Byte 3 = 8
+ *}
+
+{$IFDEF XK_TECHNICAL}
+ XK_leftradical = $8a1;
+ XK_topleftradical = $8a2;
+ XK_horizconnector = $8a3;
+ XK_topintegral = $8a4;
+ XK_botintegral = $8a5;
+ XK_vertconnector = $8a6;
+ XK_topleftsqbracket = $8a7;
+ XK_botleftsqbracket = $8a8;
+ XK_toprightsqbracket = $8a9;
+ XK_botrightsqbracket = $8aa;
+ XK_topleftparens = $8ab;
+ XK_botleftparens = $8ac;
+ XK_toprightparens = $8ad;
+ XK_botrightparens = $8ae;
+ XK_leftmiddlecurlybrace = $8af;
+ XK_rightmiddlecurlybrace = $8b0;
+ XK_topleftsummation = $8b1;
+ XK_botleftsummation = $8b2;
+ XK_topvertsummationconnector = $8b3;
+ XK_botvertsummationconnector = $8b4;
+ XK_toprightsummation = $8b5;
+ XK_botrightsummation = $8b6;
+ XK_rightmiddlesummation = $8b7;
+ XK_lessthanequal = $8bc;
+ XK_notequal = $8bd;
+ XK_greaterthanequal = $8be;
+ XK_integral = $8bf;
+ XK_therefore = $8c0;
+ XK_variation = $8c1;
+ XK_infinity = $8c2;
+ XK_nabla = $8c5;
+ XK_approximate = $8c8;
+ XK_similarequal = $8c9;
+ XK_ifonlyif = $8cd;
+ XK_implies = $8ce;
+ XK_identical = $8cf;
+ XK_radical = $8d6;
+ XK_includedin = $8da;
+ XK_includes = $8db;
+ XK_intersection = $8dc;
+ XK_union = $8dd;
+ XK_logicaland = $8de;
+ XK_logicalor = $8df;
+ XK_partialderivative = $8ef;
+ XK_function = $8f6;
+ XK_leftarrow = $8fb;
+ XK_uparrow = $8fc;
+ XK_rightarrow = $8fd;
+ XK_downarrow = $8fe;
+{$ENDIF} { XK_TECHNICAL }
+
+{*
+ * Special
+ * Byte 3 = 9
+ *}
+
+{$IFDEF XK_SPECIAL}
+ XK_blank = $9df;
+ XK_soliddiamond = $9e0;
+ XK_checkerboard = $9e1;
+ XK_ht = $9e2;
+ XK_ff = $9e3;
+ XK_cr = $9e4;
+ XK_lf = $9e5;
+ XK_nl = $9e8;
+ XK_vt = $9e9;
+ XK_lowrightcorner = $9ea;
+ XK_uprightcorner = $9eb;
+ XK_upleftcorner = $9ec;
+ XK_lowleftcorner = $9ed;
+ XK_crossinglines = $9ee;
+ XK_horizlinescan1 = $9ef;
+ XK_horizlinescan3 = $9f0;
+ XK_horizlinescan5 = $9f1;
+ XK_horizlinescan7 = $9f2;
+ XK_horizlinescan9 = $9f3;
+ XK_leftt = $9f4;
+ XK_rightt = $9f5;
+ XK_bott = $9f6;
+ XK_topt = $9f7;
+ XK_vertbar = $9f8;
+{$ENDIF} { XK_SPECIAL }
+
+{*
+ * Publishing
+ * Byte 3 = a
+ *}
+
+{$IFDEF XK_PUBLISHING}
+ XK_emspace = $aa1;
+ XK_enspace = $aa2;
+ XK_em3space = $aa3;
+ XK_em4space = $aa4;
+ XK_digitspace = $aa5;
+ XK_punctspace = $aa6;
+ XK_thinspace = $aa7;
+ XK_hairspace = $aa8;
+ XK_emdash = $aa9;
+ XK_endash = $aaa;
+ XK_signifblank = $aac;
+ XK_ellipsis = $aae;
+ XK_doubbaselinedot = $aaf;
+ XK_onethird = $ab0;
+ XK_twothirds = $ab1;
+ XK_onefifth = $ab2;
+ XK_twofifths = $ab3;
+ XK_threefifths = $ab4;
+ XK_fourfifths = $ab5;
+ XK_onesixth = $ab6;
+ XK_fivesixths = $ab7;
+ XK_careof = $ab8;
+ XK_figdash = $abb;
+ XK_leftanglebracket = $abc;
+ XK_decimalpoint = $abd;
+ XK_rightanglebracket = $abe;
+ XK_marker = $abf;
+ XK_oneeighth = $ac3;
+ XK_threeeighths = $ac4;
+ XK_fiveeighths = $ac5;
+ XK_seveneighths = $ac6;
+ XK_trademark = $ac9;
+ XK_signaturemark = $aca;
+ XK_trademarkincircle = $acb;
+ XK_leftopentriangle = $acc;
+ XK_rightopentriangle = $acd;
+ XK_emopencircle = $ace;
+ XK_emopenrectangle = $acf;
+ XK_leftsinglequotemark = $ad0;
+ XK_rightsinglequotemark = $ad1;
+ XK_leftdoublequotemark = $ad2;
+ XK_rightdoublequotemark = $ad3;
+ XK_prescription = $ad4;
+ XK_minutes = $ad6;
+ XK_seconds = $ad7;
+ XK_latincross = $ad9;
+ XK_hexagram = $ada;
+ XK_filledrectbullet = $adb;
+ XK_filledlefttribullet = $adc;
+ XK_filledrighttribullet = $add;
+ XK_emfilledcircle = $ade;
+ XK_emfilledrect = $adf;
+ XK_enopencircbullet = $ae0;
+ XK_enopensquarebullet = $ae1;
+ XK_openrectbullet = $ae2;
+ XK_opentribulletup = $ae3;
+ XK_opentribulletdown = $ae4;
+ XK_openstar = $ae5;
+ XK_enfilledcircbullet = $ae6;
+ XK_enfilledsqbullet = $ae7;
+ XK_filledtribulletup = $ae8;
+ XK_filledtribulletdown = $ae9;
+ XK_leftpointer = $aea;
+ XK_rightpointer = $aeb;
+ XK_club = $aec;
+ XK_diamond = $aed;
+ XK_heart = $aee;
+ XK_maltesecross = $af0;
+ XK_dagger = $af1;
+ XK_doubledagger = $af2;
+ XK_checkmark = $af3;
+ XK_ballotcross = $af4;
+ XK_musicalsharp = $af5;
+ XK_musicalflat = $af6;
+ XK_malesymbol = $af7;
+ XK_femalesymbol = $af8;
+ XK_telephone = $af9;
+ XK_telephonerecorder = $afa;
+ XK_phonographcopyright = $afb;
+ XK_caret = $afc;
+ XK_singlelowquotemark = $afd;
+ XK_doublelowquotemark = $afe;
+ XK_cursor = $aff;
+{$ENDIF} { XK_PUBLISHING }
+
+{*
+ * APL
+ * Byte 3 = b
+ *}
+
+{$IFDEF XK_APL}
+ XK_leftcaret = $ba3;
+ XK_rightcaret = $ba6;
+ XK_downcaret = $ba8;
+ XK_upcaret = $ba9;
+ XK_overbar = $bc0;
+ XK_downtack = $bc2;
+ XK_upshoe = $bc3;
+ XK_downstile = $bc4;
+ XK_underbar = $bc6;
+ XK_jot = $bca;
+ XK_quad = $bcc;
+ XK_uptack = $bce;
+ XK_circle = $bcf;
+ XK_upstile = $bd3;
+ XK_downshoe = $bd6;
+ XK_rightshoe = $bd8;
+ XK_leftshoe = $bda;
+ XK_lefttack = $bdc;
+ XK_righttack = $bfc;
+{$ENDIF} { XK_APL }
+
+{*
+ * Hebrew
+ * Byte 3 = c
+ *}
+
+{$IFDEF XK_HEBREW}
+ XK_hebrew_doublelowline = $cdf;
+ XK_hebrew_aleph = $ce0;
+ XK_hebrew_bet = $ce1;
+ XK_hebrew_beth = $ce1; { deprecated }
+ XK_hebrew_gimel = $ce2;
+ XK_hebrew_gimmel = $ce2; { deprecated }
+ XK_hebrew_dalet = $ce3;
+ XK_hebrew_daleth = $ce3; { deprecated }
+ XK_hebrew_he = $ce4;
+ XK_hebrew_waw = $ce5;
+ XK_hebrew_zain = $ce6;
+ XK_hebrew_zayin = $ce6; { deprecated }
+ XK_hebrew_chet = $ce7;
+ XK_hebrew_het = $ce7; { deprecated }
+ XK_hebrew_tet = $ce8;
+ XK_hebrew_teth = $ce8; { deprecated }
+ XK_hebrew_yod = $ce9;
+ XK_hebrew_finalkaph = $cea;
+ XK_hebrew_kaph = $ceb;
+ XK_hebrew_lamed = $cec;
+ XK_hebrew_finalmem = $ced;
+ XK_hebrew_mem = $cee;
+ XK_hebrew_finalnun = $cef;
+ XK_hebrew_nun = $cf0;
+ XK_hebrew_samech = $cf1;
+ XK_hebrew_samekh = $cf1; { deprecated }
+ XK_hebrew_ayin = $cf2;
+ XK_hebrew_finalpe = $cf3;
+ XK_hebrew_pe = $cf4;
+ XK_hebrew_finalzade = $cf5;
+ XK_hebrew_finalzadi = $cf5; { deprecated }
+ XK_hebrew_zade = $cf6;
+ XK_hebrew_zadi = $cf6; { deprecated }
+ XK_hebrew_qoph = $cf7;
+ XK_hebrew_kuf = $cf7; { deprecated }
+ XK_hebrew_resh = $cf8;
+ XK_hebrew_shin = $cf9;
+ XK_hebrew_taw = $cfa;
+ XK_hebrew_taf = $cfa; { deprecated }
+ XK_Hebrew_switch = $FF7E; { Alias for mode_switch }
+{$ENDIF} { XK_HEBREW }
+
+{*
+ * Thai
+ * Byte 3 = d
+ *}
+
+{$IFDEF XK_THAI}
+ XK_Thai_kokai = $da1;
+ XK_Thai_khokhai = $da2;
+ XK_Thai_khokhuat = $da3;
+ XK_Thai_khokhwai = $da4;
+ XK_Thai_khokhon = $da5;
+ XK_Thai_khorakhang = $da6;
+ XK_Thai_ngongu = $da7;
+ XK_Thai_chochan = $da8;
+ XK_Thai_choching = $da9;
+ XK_Thai_chochang = $daa;
+ XK_Thai_soso = $dab;
+ XK_Thai_chochoe = $dac;
+ XK_Thai_yoying = $dad;
+ XK_Thai_dochada = $dae;
+ XK_Thai_topatak = $daf;
+ XK_Thai_thothan = $db0;
+ XK_Thai_thonangmontho = $db1;
+ XK_Thai_thophuthao = $db2;
+ XK_Thai_nonen = $db3;
+ XK_Thai_dodek = $db4;
+ XK_Thai_totao = $db5;
+ XK_Thai_thothung = $db6;
+ XK_Thai_thothahan = $db7;
+ XK_Thai_thothong = $db8;
+ XK_Thai_nonu = $db9;
+ XK_Thai_bobaimai = $dba;
+ XK_Thai_popla = $dbb;
+ XK_Thai_phophung = $dbc;
+ XK_Thai_fofa = $dbd;
+ XK_Thai_phophan = $dbe;
+ XK_Thai_fofan = $dbf;
+ XK_Thai_phosamphao = $dc0;
+ XK_Thai_moma = $dc1;
+ XK_Thai_yoyak = $dc2;
+ XK_Thai_rorua = $dc3;
+ XK_Thai_ru = $dc4;
+ XK_Thai_loling = $dc5;
+ XK_Thai_lu = $dc6;
+ XK_Thai_wowaen = $dc7;
+ XK_Thai_sosala = $dc8;
+ XK_Thai_sorusi = $dc9;
+ XK_Thai_sosua = $dca;
+ XK_Thai_hohip = $dcb;
+ XK_Thai_lochula = $dcc;
+ XK_Thai_oang = $dcd;
+ XK_Thai_honokhuk = $dce;
+ XK_Thai_paiyannoi = $dcf;
+ XK_Thai_saraa = $dd0;
+ XK_Thai_maihanakat = $dd1;
+ XK_Thai_saraaa = $dd2;
+ XK_Thai_saraam = $dd3;
+ XK_Thai_sarai = $dd4;
+ XK_Thai_saraii = $dd5;
+ XK_Thai_saraue = $dd6;
+ XK_Thai_sarauee = $dd7;
+ XK_Thai_sarau = $dd8;
+ XK_Thai_sarauu = $dd9;
+ XK_Thai_phinthu = $dda;
+ XK_Thai_maihanakat_maitho = $dde;
+ XK_Thai_baht = $ddf;
+ XK_Thai_sarae = $de0;
+ XK_Thai_saraae = $de1;
+ XK_Thai_sarao = $de2;
+ XK_Thai_saraaimaimuan = $de3;
+ XK_Thai_saraaimaimalai = $de4;
+ XK_Thai_lakkhangyao = $de5;
+ XK_Thai_maiyamok = $de6;
+ XK_Thai_maitaikhu = $de7;
+ XK_Thai_maiek = $de8;
+ XK_Thai_maitho = $de9;
+ XK_Thai_maitri = $dea;
+ XK_Thai_maichattawa = $deb;
+ XK_Thai_thanthakhat = $dec;
+ XK_Thai_nikhahit = $ded;
+ XK_Thai_leksun = $df0;
+ XK_Thai_leknung = $df1;
+ XK_Thai_leksong = $df2;
+ XK_Thai_leksam = $df3;
+ XK_Thai_leksi = $df4;
+ XK_Thai_lekha = $df5;
+ XK_Thai_lekhok = $df6;
+ XK_Thai_lekchet = $df7;
+ XK_Thai_lekpaet = $df8;
+ XK_Thai_lekkao = $df9;
+{$ENDIF} { XK_THAI }
+
+{*
+ * Korean
+ * Byte 3 = e
+ *}
+
+{$IFDEF XK_KOREAN}
+
+ XK_Hangul = $ff31; { Hangul start/stop(toggle) }
+ XK_Hangul_Start = $ff32; { Hangul start }
+ XK_Hangul_End = $ff33; { Hangul end, English start }
+ XK_Hangul_Hanja = $ff34; { Start Hangul->Hanja Conversion }
+ XK_Hangul_Jamo = $ff35; { Hangul Jamo mode }
+ XK_Hangul_Romaja = $ff36; { Hangul Romaja mode }
+ XK_Hangul_Codeinput = $ff37; { Hangul code input mode }
+ XK_Hangul_Jeonja = $ff38; { Jeonja mode }
+ XK_Hangul_Banja = $ff39; { Banja mode }
+ XK_Hangul_PreHanja = $ff3a; { Pre Hanja conversion }
+ XK_Hangul_PostHanja = $ff3b; { Post Hanja conversion }
+ XK_Hangul_SingleCandidate = $ff3c; { Single candidate }
+ XK_Hangul_MultipleCandidate = $ff3d; { Multiple candidate }
+ XK_Hangul_PreviousCandidate = $ff3e; { Previous candidate }
+ XK_Hangul_Special = $ff3f; { Special symbols }
+ XK_Hangul_switch = $FF7E; { Alias for mode_switch }
+
+{ Hangul Consonant Characters }
+ XK_Hangul_Kiyeog = $ea1;
+ XK_Hangul_SsangKiyeog = $ea2;
+ XK_Hangul_KiyeogSios = $ea3;
+ XK_Hangul_Nieun = $ea4;
+ XK_Hangul_NieunJieuj = $ea5;
+ XK_Hangul_NieunHieuh = $ea6;
+ XK_Hangul_Dikeud = $ea7;
+ XK_Hangul_SsangDikeud = $ea8;
+ XK_Hangul_Rieul = $ea9;
+ XK_Hangul_RieulKiyeog = $eaa;
+ XK_Hangul_RieulMieum = $eab;
+ XK_Hangul_RieulPieub = $eac;
+ XK_Hangul_RieulSios = $ead;
+ XK_Hangul_RieulTieut = $eae;
+ XK_Hangul_RieulPhieuf = $eaf;
+ XK_Hangul_RieulHieuh = $eb0;
+ XK_Hangul_Mieum = $eb1;
+ XK_Hangul_Pieub = $eb2;
+ XK_Hangul_SsangPieub = $eb3;
+ XK_Hangul_PieubSios = $eb4;
+ XK_Hangul_Sios = $eb5;
+ XK_Hangul_SsangSios = $eb6;
+ XK_Hangul_Ieung = $eb7;
+ XK_Hangul_Jieuj = $eb8;
+ XK_Hangul_SsangJieuj = $eb9;
+ XK_Hangul_Cieuc = $eba;
+ XK_Hangul_Khieuq = $ebb;
+ XK_Hangul_Tieut = $ebc;
+ XK_Hangul_Phieuf = $ebd;
+ XK_Hangul_Hieuh = $ebe;
+
+{ Hangul Vowel Characters }
+ XK_Hangul_A = $ebf;
+ XK_Hangul_AE = $ec0;
+ XK_Hangul_YA = $ec1;
+ XK_Hangul_YAE = $ec2;
+ XK_Hangul_EO = $ec3;
+ XK_Hangul_E = $ec4;
+ XK_Hangul_YEO = $ec5;
+ XK_Hangul_YE = $ec6;
+ XK_Hangul_O = $ec7;
+ XK_Hangul_WA = $ec8;
+ XK_Hangul_WAE = $ec9;
+ XK_Hangul_OE = $eca;
+ XK_Hangul_YO = $ecb;
+ XK_Hangul_U = $ecc;
+ XK_Hangul_WEO = $ecd;
+ XK_Hangul_WE = $ece;
+ XK_Hangul_WI = $ecf;
+ XK_Hangul_YU = $ed0;
+ XK_Hangul_EU = $ed1;
+ XK_Hangul_YI = $ed2;
+ XK_Hangul_I = $ed3;
+
+{ Hangul syllable-final (JongSeong) Characters }
+ XK_Hangul_J_Kiyeog = $ed4;
+ XK_Hangul_J_SsangKiyeog = $ed5;
+ XK_Hangul_J_KiyeogSios = $ed6;
+ XK_Hangul_J_Nieun = $ed7;
+ XK_Hangul_J_NieunJieuj = $ed8;
+ XK_Hangul_J_NieunHieuh = $ed9;
+ XK_Hangul_J_Dikeud = $eda;
+ XK_Hangul_J_Rieul = $edb;
+ XK_Hangul_J_RieulKiyeog = $edc;
+ XK_Hangul_J_RieulMieum = $edd;
+ XK_Hangul_J_RieulPieub = $ede;
+ XK_Hangul_J_RieulSios = $edf;
+ XK_Hangul_J_RieulTieut = $ee0;
+ XK_Hangul_J_RieulPhieuf = $ee1;
+ XK_Hangul_J_RieulHieuh = $ee2;
+ XK_Hangul_J_Mieum = $ee3;
+ XK_Hangul_J_Pieub = $ee4;
+ XK_Hangul_J_PieubSios = $ee5;
+ XK_Hangul_J_Sios = $ee6;
+ XK_Hangul_J_SsangSios = $ee7;
+ XK_Hangul_J_Ieung = $ee8;
+ XK_Hangul_J_Jieuj = $ee9;
+ XK_Hangul_J_Cieuc = $eea;
+ XK_Hangul_J_Khieuq = $eeb;
+ XK_Hangul_J_Tieut = $eec;
+ XK_Hangul_J_Phieuf = $eed;
+ XK_Hangul_J_Hieuh = $eee;
+
+{ Ancient Hangul Consonant Characters }
+ XK_Hangul_RieulYeorinHieuh = $eef;
+ XK_Hangul_SunkyeongeumMieum = $ef0;
+ XK_Hangul_SunkyeongeumPieub = $ef1;
+ XK_Hangul_PanSios = $ef2;
+ XK_Hangul_KkogjiDalrinIeung = $ef3;
+ XK_Hangul_SunkyeongeumPhieuf = $ef4;
+ XK_Hangul_YeorinHieuh = $ef5;
+
+{ Ancient Hangul Vowel Characters }
+ XK_Hangul_AraeA = $ef6;
+ XK_Hangul_AraeAE = $ef7;
+
+{ Ancient Hangul syllable-final (JongSeong) Characters }
+ XK_Hangul_J_PanSios = $ef8;
+ XK_Hangul_J_KkogjiDalrinIeung = $ef9;
+ XK_Hangul_J_YeorinHieuh = $efa;
+
+{ Korean currency symbol }
+ XK_Korean_Won = $eff;
+
+{$ENDIF} { XK_KOREAN }
+
+{*
+ * Armenian
+ * Byte 3 = = $14
+ *}
+
+{$IFDEF XK_ARMENIAN}
+ XK_Armenian_eternity = $14a1;
+ XK_Armenian_ligature_ew = $14a2;
+ XK_Armenian_full_stop = $14a3;
+ XK_Armenian_verjaket = $14a3;
+ XK_Armenian_parenright = $14a4;
+ XK_Armenian_parenleft = $14a5;
+ XK_Armenian_guillemotright = $14a6;
+ XK_Armenian_guillemotleft = $14a7;
+ XK_Armenian_em_dash = $14a8;
+ XK_Armenian_dot = $14a9;
+ XK_Armenian_mijaket = $14a9;
+ XK_Armenian_separation_mark = $14aa;
+ XK_Armenian_but = $14aa;
+ XK_Armenian_comma = $14ab;
+ XK_Armenian_en_dash = $14ac;
+ XK_Armenian_hyphen = $14ad;
+ XK_Armenian_yentamna = $14ad;
+ XK_Armenian_ellipsis = $14ae;
+ XK_Armenian_exclam = $14af;
+ XK_Armenian_amanak = $14af;
+ XK_Armenian_accent = $14b0;
+ XK_Armenian_shesht = $14b0;
+ XK_Armenian_question = $14b1;
+ XK_Armenian_paruyk = $14b1;
+ XKc_Armenian_AYB = $14b2;
+ XK_Armenian_ayb = $14b3;
+ XKc_Armenian_BEN = $14b4;
+ XK_Armenian_ben = $14b5;
+ XKc_Armenian_GIM = $14b6;
+ XK_Armenian_gim = $14b7;
+ XKc_Armenian_DA = $14b8;
+ XK_Armenian_da = $14b9;
+ XKc_Armenian_YECH = $14ba;
+ XK_Armenian_yech = $14bb;
+ XKc_Armenian_ZA = $14bc;
+ XK_Armenian_za = $14bd;
+ XKc_Armenian_E = $14be;
+ XK_Armenian_e = $14bf;
+ XKc_Armenian_AT = $14c0;
+ XK_Armenian_at = $14c1;
+ XKc_Armenian_TO = $14c2;
+ XK_Armenian_to = $14c3;
+ XKc_Armenian_ZHE = $14c4;
+ XK_Armenian_zhe = $14c5;
+ XKc_Armenian_INI = $14c6;
+ XK_Armenian_ini = $14c7;
+ XKc_Armenian_LYUN = $14c8;
+ XK_Armenian_lyun = $14c9;
+ XKc_Armenian_KHE = $14ca;
+ XK_Armenian_khe = $14cb;
+ XKc_Armenian_TSA = $14cc;
+ XK_Armenian_tsa = $14cd;
+ XKc_Armenian_KEN = $14ce;
+ XK_Armenian_ken = $14cf;
+ XKc_Armenian_HO = $14d0;
+ XK_Armenian_ho = $14d1;
+ XKc_Armenian_DZA = $14d2;
+ XK_Armenian_dza = $14d3;
+ XKc_Armenian_GHAT = $14d4;
+ XK_Armenian_ghat = $14d5;
+ XKc_Armenian_TCHE = $14d6;
+ XK_Armenian_tche = $14d7;
+ XKc_Armenian_MEN = $14d8;
+ XK_Armenian_men = $14d9;
+ XKc_Armenian_HI = $14da;
+ XK_Armenian_hi = $14db;
+ XKc_Armenian_NU = $14dc;
+ XK_Armenian_nu = $14dd;
+ XKc_Armenian_SHA = $14de;
+ XK_Armenian_sha = $14df;
+ XKc_Armenian_VO = $14e0;
+ XK_Armenian_vo = $14e1;
+ XKc_Armenian_CHA = $14e2;
+ XK_Armenian_cha = $14e3;
+ XKc_Armenian_PE = $14e4;
+ XK_Armenian_pe = $14e5;
+ XKc_Armenian_JE = $14e6;
+ XK_Armenian_je = $14e7;
+ XKc_Armenian_RA = $14e8;
+ XK_Armenian_ra = $14e9;
+ XKc_Armenian_SE = $14ea;
+ XK_Armenian_se = $14eb;
+ XKc_Armenian_VEV = $14ec;
+ XK_Armenian_vev = $14ed;
+ XKc_Armenian_TYUN = $14ee;
+ XK_Armenian_tyun = $14ef;
+ XKc_Armenian_RE = $14f0;
+ XK_Armenian_re = $14f1;
+ XKc_Armenian_TSO = $14f2;
+ XK_Armenian_tso = $14f3;
+ XKc_Armenian_VYUN = $14f4;
+ XK_Armenian_vyun = $14f5;
+ XKc_Armenian_PYUR = $14f6;
+ XK_Armenian_pyur = $14f7;
+ XKc_Armenian_KE = $14f8;
+ XK_Armenian_ke = $14f9;
+ XKc_Armenian_O = $14fa;
+ XK_Armenian_o = $14fb;
+ XKc_Armenian_FE = $14fc;
+ XK_Armenian_fe = $14fd;
+ XK_Armenian_apostrophe = $14fe;
+ XK_Armenian_section_sign = $14ff;
+{$ENDIF} { XK_ARMENIAN }
+
+{*
+ * Georgian
+ * Byte 3 = = $15
+ *}
+
+{$IFDEF XK_GEORGIAN}
+ XK_Georgian_an = $15d0;
+ XK_Georgian_ban = $15d1;
+ XK_Georgian_gan = $15d2;
+ XK_Georgian_don = $15d3;
+ XK_Georgian_en = $15d4;
+ XK_Georgian_vin = $15d5;
+ XK_Georgian_zen = $15d6;
+ XK_Georgian_tan = $15d7;
+ XK_Georgian_in = $15d8;
+ XK_Georgian_kan = $15d9;
+ XK_Georgian_las = $15da;
+ XK_Georgian_man = $15db;
+ XK_Georgian_nar = $15dc;
+ XK_Georgian_on = $15dd;
+ XK_Georgian_par = $15de;
+ XK_Georgian_zhar = $15df;
+ XK_Georgian_rae = $15e0;
+ XK_Georgian_san = $15e1;
+ XK_Georgian_tar = $15e2;
+ XK_Georgian_un = $15e3;
+ XK_Georgian_phar = $15e4;
+ XK_Georgian_khar = $15e5;
+ XK_Georgian_ghan = $15e6;
+ XK_Georgian_qar = $15e7;
+ XK_Georgian_shin = $15e8;
+ XK_Georgian_chin = $15e9;
+ XK_Georgian_can = $15ea;
+ XK_Georgian_jil = $15eb;
+ XK_Georgian_cil = $15ec;
+ XK_Georgian_char = $15ed;
+ XK_Georgian_xan = $15ee;
+ XK_Georgian_jhan = $15ef;
+ XK_Georgian_hae = $15f0;
+ XK_Georgian_he = $15f1;
+ XK_Georgian_hie = $15f2;
+ XK_Georgian_we = $15f3;
+ XK_Georgian_har = $15f4;
+ XK_Georgian_hoe = $15f5;
+ XK_Georgian_fi = $15f6;
+{$ENDIF} { XK_GEORGIAN }
+
+{*
+ * Azeri (and other Turkic or Caucasian languages of ex-USSR)
+ * Byte 3 = = $16
+ *}
+
+{$IFDEF XK_CAUCASUS}
+{ latin }
+ XKc_Ccedillaabovedot = $16a2;
+ XKc_Xabovedot = $16a3;
+ XKc_Qabovedot = $16a5;
+ XKc_Ibreve = $16a6;
+ XKc_IE = $16a7;
+ XKc_UO = $16a8;
+ XKc_Zstroke = $16a9;
+ XKc_Gcaron = $16aa;
+ XKc_Obarred = $16af;
+ XK_ccedillaabovedot = $16b2;
+ XK_xabovedot = $16b3;
+ XKc_Ocaron = $16b4;
+ XK_qabovedot = $16b5;
+ XK_ibreve = $16b6;
+ XK_ie = $16b7;
+ XK_uo = $16b8;
+ XK_zstroke = $16b9;
+ XK_gcaron = $16ba;
+ XK_ocaron = $16bd;
+ XK_obarred = $16bf;
+ XKc_SCHWA = $16c6;
+ XK_schwa = $16f6;
+{ those are not really Caucasus, but I put them here for now }
+{ For Inupiak }
+ XKc_Lbelowdot = $16d1;
+ XKc_Lstrokebelowdot = $16d2;
+ XK_lbelowdot = $16e1;
+ XK_lstrokebelowdot = $16e2;
+{ For Guarani }
+ XKc_Gtilde = $16d3;
+ XK_gtilde = $16e3;
+{$ENDIF} { XK_CAUCASUS }
+
+{*
+ * Vietnamese
+ * Byte 3 = = $1e
+ *}
+
+{$IFDEF XK_VIETNAMESE}
+ XKc_Abelowdot = $1ea0;
+ XK_abelowdot = $1ea1;
+ XKc_Ahook = $1ea2;
+ XK_ahook = $1ea3;
+ XKc_Acircumflexacute = $1ea4;
+ XK_acircumflexacute = $1ea5;
+ XKc_Acircumflexgrave = $1ea6;
+ XK_acircumflexgrave = $1ea7;
+ XKc_Acircumflexhook = $1ea8;
+ XK_acircumflexhook = $1ea9;
+ XKc_Acircumflextilde = $1eaa;
+ XK_acircumflextilde = $1eab;
+ XKc_Acircumflexbelowdot = $1eac;
+ XK_acircumflexbelowdot = $1ead;
+ XKc_Abreveacute = $1eae;
+ XK_abreveacute = $1eaf;
+ XKc_Abrevegrave = $1eb0;
+ XK_abrevegrave = $1eb1;
+ XKc_Abrevehook = $1eb2;
+ XK_abrevehook = $1eb3;
+ XKc_Abrevetilde = $1eb4;
+ XK_abrevetilde = $1eb5;
+ XKc_Abrevebelowdot = $1eb6;
+ XK_abrevebelowdot = $1eb7;
+ XKc_Ebelowdot = $1eb8;
+ XK_ebelowdot = $1eb9;
+ XKc_Ehook = $1eba;
+ XK_ehook = $1ebb;
+ XKc_Etilde = $1ebc;
+ XK_etilde = $1ebd;
+ XKc_Ecircumflexacute = $1ebe;
+ XK_ecircumflexacute = $1ebf;
+ XKc_Ecircumflexgrave = $1ec0;
+ XK_ecircumflexgrave = $1ec1;
+ XKc_Ecircumflexhook = $1ec2;
+ XK_ecircumflexhook = $1ec3;
+ XKc_Ecircumflextilde = $1ec4;
+ XK_ecircumflextilde = $1ec5;
+ XKc_Ecircumflexbelowdot = $1ec6;
+ XK_ecircumflexbelowdot = $1ec7;
+ XKc_Ihook = $1ec8;
+ XK_ihook = $1ec9;
+ XKc_Ibelowdot = $1eca;
+ XK_ibelowdot = $1ecb;
+ XKc_Obelowdot = $1ecc;
+ XK_obelowdot = $1ecd;
+ XKc_Ohook = $1ece;
+ XK_ohook = $1ecf;
+ XKc_Ocircumflexacute = $1ed0;
+ XK_ocircumflexacute = $1ed1;
+ XKc_Ocircumflexgrave = $1ed2;
+ XK_ocircumflexgrave = $1ed3;
+ XKc_Ocircumflexhook = $1ed4;
+ XK_ocircumflexhook = $1ed5;
+ XKc_Ocircumflextilde = $1ed6;
+ XK_ocircumflextilde = $1ed7;
+ XKc_Ocircumflexbelowdot = $1ed8;
+ XK_ocircumflexbelowdot = $1ed9;
+ XKc_Ohornacute = $1eda;
+ XK_ohornacute = $1edb;
+ XKc_Ohorngrave = $1edc;
+ XK_ohorngrave = $1edd;
+ XKc_Ohornhook = $1ede;
+ XK_ohornhook = $1edf;
+ XKc_Ohorntilde = $1ee0;
+ XK_ohorntilde = $1ee1;
+ XKc_Ohornbelowdot = $1ee2;
+ XK_ohornbelowdot = $1ee3;
+ XKc_Ubelowdot = $1ee4;
+ XK_ubelowdot = $1ee5;
+ XKc_Uhook = $1ee6;
+ XK_uhook = $1ee7;
+ XKc_Uhornacute = $1ee8;
+ XK_uhornacute = $1ee9;
+ XKc_Uhorngrave = $1eea;
+ XK_uhorngrave = $1eeb;
+ XKc_Uhornhook = $1eec;
+ XK_uhornhook = $1eed;
+ XKc_Uhorntilde = $1eee;
+ XK_uhorntilde = $1eef;
+ XKc_Uhornbelowdot = $1ef0;
+ XK_uhornbelowdot = $1ef1;
+ XKc_Ybelowdot = $1ef4;
+ XK_ybelowdot = $1ef5;
+ XKc_Yhook = $1ef6;
+ XK_yhook = $1ef7;
+ XKc_Ytilde = $1ef8;
+ XK_ytilde = $1ef9;
+ XKc_Ohorn = $1efa; { U+01a0 }
+ XK_ohorn = $1efb; { U+01a1 }
+ XKc_Uhorn = $1efc; { U+01af }
+ XK_uhorn = $1efd; { U+01b0 }
+
+ XK_combining_tilde = $1e9f; { U+0303 }
+ XK_combining_grave = $1ef2; { U+0300 }
+ XK_combining_acute = $1ef3; { U+0301 }
+ XK_combining_hook = $1efe; { U+0309 }
+ XK_combining_belowdot = $1eff; { U+0323 }
+{$ENDIF} { XK_VIETNAMESE }
+
+{$IFDEF XK_CURRENCY}
+ XK_EcuSign = $20a0;
+ XK_ColonSign = $20a1;
+ XK_CruzeiroSign = $20a2;
+ XK_FFrancSign = $20a3;
+ XK_LiraSign = $20a4;
+ XK_MillSign = $20a5;
+ XK_NairaSign = $20a6;
+ XK_PesetaSign = $20a7;
+ XK_RupeeSign = $20a8;
+ XK_WonSign = $20a9;
+ XK_NewSheqelSign = $20aa;
+ XK_DongSign = $20ab;
+ XK_EuroSign = $20ac;
+{$ENDIF}
+Implementation
+End.
diff --git a/packages/x11/src/randr.inc b/packages/x11/src/randr.inc
new file mode 100644
index 0000000000..9b5265c390
--- /dev/null
+++ b/packages/x11/src/randr.inc
@@ -0,0 +1,74 @@
+{*
+ * $XFree86: xc/include/extensions/randr.h,v 1.4 2001/11/24 07:24:58 keithp Exp $
+ *
+ * Copyright (C) 2000, Compaq Computer Corporation,
+ * Copyright (C) 2002, Hewlett Packard, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Compaq or HP not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. HP makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL HP
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Jim Gettys, HP Labs, Hewlett-Packard, Inc.
+ *}
+
+type
+ PRotation = ^TRotation;
+ TRotation = cushort;
+ PSizeID = ^TSizeID;
+ TSizeID = cushort;
+ PSubpixelOrder = ^TSubpixelOrder;
+ TSubpixelOrder = cushort;
+
+const
+ RANDR_NAME = 'RANDR';
+ RANDR_MAJOR = 1;
+ RANDR_MINOR = 1;
+
+ RRNumberErrors = 0;
+ RRNumberEvents = 1;
+
+ X_RRQueryVersion = 0;
+{ we skip 1 to make old clients fail pretty immediately }
+ X_RROldGetScreenInfo = 1;
+ X_RR1_0SetScreenConfig = 2;
+{ V1.0 apps share the same set screen config request id }
+ X_RRSetScreenConfig = 2;
+ X_RROldScreenChangeSelectInput = 3;
+{ 3 used to be ScreenChangeSelectInput; deprecated }
+ X_RRSelectInput = 4;
+ X_RRGetScreenInfo = 5;
+
+{ used in XRRSelectInput }
+
+ RRScreenChangeNotifyMask = 1 shl 0;
+
+ RRScreenChangeNotify = 0;
+
+{ used in the rotation field; rotation and reflection in 0.1 proto. }
+ RR_Rotate_0 = 1;
+ RR_Rotate_90 = 2;
+ RR_Rotate_180 = 4;
+ RR_Rotate_270 = 8;
+
+{ new in 1.0 protocol, to allow reflection of screen }
+
+ RR_Reflect_X = 16;
+ RR_Reflect_Y = 32;
+
+ RRSetConfigSuccess = 0;
+ RRSetConfigInvalidConfigTime = 1;
+ RRSetConfigInvalidTime = 2;
+ RRSetConfigFailed = 3;
diff --git a/packages/x11/src/x.pp b/packages/x11/src/x.pp
new file mode 100644
index 0000000000..970102d24a
--- /dev/null
+++ b/packages/x11/src/x.pp
@@ -0,0 +1,432 @@
+unit x;
+interface
+uses
+ ctypes;
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from x.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ x.h
+}
+
+{ Pointers to basic pascal types, inserted by h2pas conversion program.}
+Type
+ PPLongint = ^PLongint;
+ PPByte = ^PByte;
+ PPChar = ^PChar;
+ PPPChar = ^PPChar;
+ PPWideChar = ^PWideChar;
+ PPPWideChar = ^PPWideChar;
+
+
+{$PACKRECORDS C}
+
+
+const
+ X_PROTOCOL = 11;
+ X_PROTOCOL_REVISION = 0;
+type
+
+ PXID = ^TXID;
+ TXID = culong;
+
+ PMask = ^TMask;
+ TMask = culong;
+
+ PPAtom = ^PAtom;
+ PAtom = ^TAtom;
+ TAtom = culong;
+
+ PVisualID = ^TVisualID;
+ TVisualID = culong;
+
+ PTime = ^TTime;
+ TTime = culong;
+
+ PPWindow = ^PWindow;
+ PWindow = ^TWindow;
+ TWindow = TXID;
+
+ PDrawable = ^TDrawable;
+ TDrawable = TXID;
+
+ PFont = ^TFont;
+ TFont = TXID;
+
+ PPixmap = ^TPixmap;
+ TPixmap = TXID;
+
+ PCursor = ^TCursor;
+ TCursor = TXID;
+
+ PColormap = ^TColormap;
+ TColormap = TXID;
+
+ PGContext = ^TGContext;
+ TGContext = TXID;
+
+ PKeySym = ^TKeySym;
+ TKeySym = TXID;
+
+ PKeyCode = ^TKeyCode;
+ TKeyCode = cuchar;
+
+const
+ None = 0;
+ ParentRelative = 1;
+ CopyFromParent = 0;
+ PointerWindow = 0;
+ InputFocus = 1;
+ PointerRoot = 1;
+ AnyPropertyType = 0;
+ AnyKey = 0;
+ AnyButton = 0;
+ AllTemporary = 0;
+ CurrentTime = 0;
+ NoSymbol = 0;
+ NoEventMask = 0;
+ KeyPressMask = 1 shl 0;
+ KeyReleaseMask = 1 shl 1;
+ ButtonPressMask = 1 shl 2;
+ ButtonReleaseMask = 1 shl 3;
+ EnterWindowMask = 1 shl 4;
+ LeaveWindowMask = 1 shl 5;
+ PointerMotionMask = 1 shl 6;
+ PointerMotionHintMask = 1 shl 7;
+ Button1MotionMask = 1 shl 8;
+ Button2MotionMask = 1 shl 9;
+ Button3MotionMask = 1 shl 10;
+ Button4MotionMask = 1 shl 11;
+ Button5MotionMask = 1 shl 12;
+ ButtonMotionMask = 1 shl 13;
+ KeymapStateMask = 1 shl 14;
+ ExposureMask = 1 shl 15;
+ VisibilityChangeMask = 1 shl 16;
+ StructureNotifyMask = 1 shl 17;
+ ResizeRedirectMask = 1 shl 18;
+ SubstructureNotifyMask = 1 shl 19;
+ SubstructureRedirectMask = 1 shl 20;
+ FocusChangeMask = 1 shl 21;
+ PropertyChangeMask = 1 shl 22;
+ ColormapChangeMask = 1 shl 23;
+ OwnerGrabButtonMask = 1 shl 24;
+ 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;
+ LASTEvent = 35;
+ ShiftMask = 1 shl 0;
+ LockMask = 1 shl 1;
+ ControlMask = 1 shl 2;
+ Mod1Mask = 1 shl 3;
+ Mod2Mask = 1 shl 4;
+ Mod3Mask = 1 shl 5;
+ Mod4Mask = 1 shl 6;
+ Mod5Mask = 1 shl 7;
+ ShiftMapIndex = 0;
+ LockMapIndex = 1;
+ ControlMapIndex = 2;
+ Mod1MapIndex = 3;
+ Mod2MapIndex = 4;
+ Mod3MapIndex = 5;
+ Mod4MapIndex = 6;
+ Mod5MapIndex = 7;
+ Button1Mask = 1 shl 8;
+ Button2Mask = 1 shl 9;
+ Button3Mask = 1 shl 10;
+ Button4Mask = 1 shl 11;
+ Button5Mask = 1 shl 12;
+ AnyModifier = 1 shl 15;
+ Button1 = 1;
+ Button2 = 2;
+ Button3 = 3;
+ Button4 = 4;
+ Button5 = 5;
+ NotifyNormal = 0;
+ NotifyGrab = 1;
+ NotifyUngrab = 2;
+ NotifyWhileGrabbed = 3;
+ NotifyHint = 1;
+ NotifyAncestor = 0;
+ NotifyVirtual = 1;
+ NotifyInferior = 2;
+ NotifyNonlinear = 3;
+ NotifyNonlinearVirtual = 4;
+ NotifyPointer = 5;
+ NotifyPointerRoot = 6;
+ NotifyDetailNone = 7;
+ VisibilityUnobscured = 0;
+ VisibilityPartiallyObscured = 1;
+ VisibilityFullyObscured = 2;
+ PlaceOnTop = 0;
+ PlaceOnBottom = 1;
+ FamilyInternet = 0;
+ FamilyDECnet = 1;
+ FamilyChaos = 2;
+ FamilyInternet6 = 6;
+ FamilyServerInterpreted = 5;
+ PropertyNewValue = 0;
+ PropertyDelete = 1;
+ ColormapUninstalled = 0;
+ ColormapInstalled = 1;
+ GrabModeSync = 0;
+ GrabModeAsync = 1;
+ GrabSuccess = 0;
+ AlreadyGrabbed = 1;
+ GrabInvalidTime = 2;
+ GrabNotViewable = 3;
+ GrabFrozen = 4;
+ AsyncPointer = 0;
+ SyncPointer = 1;
+ ReplayPointer = 2;
+ AsyncKeyboard = 3;
+ SyncKeyboard = 4;
+ ReplayKeyboard = 5;
+ AsyncBoth = 6;
+ SyncBoth = 7;
+ RevertToNone = None;
+ RevertToPointerRoot = PointerRoot;
+ RevertToParent = 2;
+ 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;
+ InputOutput = 1;
+ InputOnly = 2;
+ CWBackPixmap = 1 shl 0;
+ CWBackPixel = 1 shl 1;
+ CWBorderPixmap = 1 shl 2;
+ CWBorderPixel = 1 shl 3;
+ CWBitGravity = 1 shl 4;
+ CWWinGravity = 1 shl 5;
+ CWBackingStore = 1 shl 6;
+ CWBackingPlanes = 1 shl 7;
+ CWBackingPixel = 1 shl 8;
+ CWOverrideRedirect = 1 shl 9;
+ CWSaveUnder = 1 shl 10;
+ CWEventMask = 1 shl 11;
+ CWDontPropagate = 1 shl 12;
+ CWColormap = 1 shl 13;
+ CWCursor = 1 shl 14;
+ CWX = 1 shl 0;
+ CWY = 1 shl 1;
+ CWWidth = 1 shl 2;
+ CWHeight = 1 shl 3;
+ CWBorderWidth = 1 shl 4;
+ CWSibling = 1 shl 5;
+ CWStackMode = 1 shl 6;
+ ForgetGravity = 0;
+ NorthWestGravity = 1;
+ NorthGravity = 2;
+ NorthEastGravity = 3;
+ WestGravity = 4;
+ CenterGravity = 5;
+ EastGravity = 6;
+ SouthWestGravity = 7;
+ SouthGravity = 8;
+ SouthEastGravity = 9;
+ StaticGravity = 10;
+ UnmapGravity = 0;
+ NotUseful = 0;
+ WhenMapped = 1;
+ Always = 2;
+ IsUnmapped = 0;
+ IsUnviewable = 1;
+ IsViewable = 2;
+ SetModeInsert = 0;
+ SetModeDelete = 1;
+ DestroyAll = 0;
+ RetainPermanent = 1;
+ RetainTemporary = 2;
+ Above = 0;
+ Below = 1;
+ TopIf = 2;
+ BottomIf = 3;
+ Opposite = 4;
+ RaiseLowest = 0;
+ LowerHighest = 1;
+ PropModeReplace = 0;
+ PropModePrepend = 1;
+ PropModeAppend = 2;
+ GXclear = $0;
+ GXand = $1;
+ GXandReverse = $2;
+ GXcopy = $3;
+ GXandInverted = $4;
+ GXnoop = $5;
+ GXxor = $6;
+ GXor = $7;
+ GXnor = $8;
+ GXequiv = $9;
+ GXinvert = $a;
+ GXorReverse = $b;
+ GXcopyInverted = $c;
+ GXorInverted = $d;
+ GXnand = $e;
+ GXset = $f;
+ LineSolid = 0;
+ LineOnOffDash = 1;
+ LineDoubleDash = 2;
+ CapNotLast = 0;
+ CapButt = 1;
+ CapRound = 2;
+ CapProjecting = 3;
+ JoinMiter = 0;
+ JoinRound = 1;
+ JoinBevel = 2;
+ FillSolid = 0;
+ FillTiled = 1;
+ FillStippled = 2;
+ FillOpaqueStippled = 3;
+ EvenOddRule = 0;
+ WindingRule = 1;
+ ClipByChildren = 0;
+ IncludeInferiors = 1;
+ Unsorted = 0;
+ YSorted = 1;
+ YXSorted = 2;
+ YXBanded = 3;
+ CoordModeOrigin = 0;
+ CoordModePrevious = 1;
+ Complex = 0;
+ Nonconvex = 1;
+ Convex = 2;
+ ArcChord = 0;
+ ArcPieSlice = 1;
+ GCFunction = 1 shl 0;
+ GCPlaneMask = 1 shl 1;
+ GCForeground = 1 shl 2;
+ GCBackground = 1 shl 3;
+ GCLineWidth = 1 shl 4;
+ GCLineStyle = 1 shl 5;
+ GCCapStyle = 1 shl 6;
+ GCJoinStyle = 1 shl 7;
+ GCFillStyle = 1 shl 8;
+ GCFillRule = 1 shl 9;
+ GCTile = 1 shl 10;
+ GCStipple = 1 shl 11;
+ GCTileStipXOrigin = 1 shl 12;
+ GCTileStipYOrigin = 1 shl 13;
+ GCFont = 1 shl 14;
+ GCSubwindowMode = 1 shl 15;
+ GCGraphicsExposures = 1 shl 16;
+ GCClipXOrigin = 1 shl 17;
+ GCClipYOrigin = 1 shl 18;
+ GCClipMask = 1 shl 19;
+ GCDashOffset = 1 shl 20;
+ GCDashList = 1 shl 21;
+ GCArcMode = 1 shl 22;
+ GCLastBit = 22;
+ FontLeftToRight = 0;
+ FontRightToLeft = 1;
+ FontChange = 255;
+ XYBitmap = 0;
+ XYPixmap = 1;
+ ZPixmap = 2;
+ AllocNone = 0;
+ AllocAll = 1;
+ DoRed = 1 shl 0;
+ DoGreen = 1 shl 1;
+ DoBlue = 1 shl 2;
+ CursorShape = 0;
+ TileShape = 1;
+ StippleShape = 2;
+ AutoRepeatModeOff = 0;
+ AutoRepeatModeOn = 1;
+ AutoRepeatModeDefault = 2;
+ LedModeOff = 0;
+ LedModeOn = 1;
+ KBKeyClickPercent = 1 shl 0;
+ KBBellPercent = 1 shl 1;
+ KBBellPitch = 1 shl 2;
+ KBBellDuration = 1 shl 3;
+ KBLed = 1 shl 4;
+ KBLedMode = 1 shl 5;
+ KBKey = 1 shl 6;
+ KBAutoRepeatMode = 1 shl 7;
+ MappingSuccess = 0;
+ MappingBusy = 1;
+ MappingFailed = 2;
+ MappingModifier = 0;
+ MappingKeyboard = 1;
+ MappingPointer = 2;
+ DontPreferBlanking = 0;
+ PreferBlanking = 1;
+ DefaultBlanking = 2;
+ DisableScreenSaver = 0;
+ DisableScreenInterval = 0;
+ DontAllowExposures = 0;
+ AllowExposures = 1;
+ DefaultExposures = 2;
+ ScreenSaverReset = 0;
+ ScreenSaverActive = 1;
+ HostInsert = 0;
+ HostDelete = 1;
+ EnableAccess = 1;
+ DisableAccess = 0;
+ StaticGray = 0;
+ GrayScale = 1;
+ StaticColor = 2;
+ PseudoColor = 3;
+ TrueColor = 4;
+ DirectColor = 5;
+ LSBFirst = 0;
+ MSBFirst = 1;
+
+implementation
+end.
diff --git a/packages/x11/src/xatom.pp b/packages/x11/src/xatom.pp
new file mode 100644
index 0000000000..2378e298fa
--- /dev/null
+++ b/packages/x11/src/xatom.pp
@@ -0,0 +1,88 @@
+{$PACKRECORDS C}
+{$MODE OBJFPC}
+
+unit xatom;
+interface
+uses X;
+
+{
+ THIS IS A GENERATED FILE
+
+ Do not change! Changing this file implies a protocol change!
+}
+
+const
+ XA_PRIMARY = TAtom ( 1);
+ XA_SECONDARY = TAtom ( 2);
+ XA_ARC = TAtom ( 3);
+ XA_ATOM = TAtom ( 4);
+ XA_BITMAP = TAtom ( 5);
+ XA_CARDINAL = TAtom ( 6);
+ XA_COLORMAP = TAtom ( 7);
+ XA_CURSOR = TAtom ( 8);
+ XA_CUT_BUFFER0 = TAtom ( 9);
+ XA_CUT_BUFFER1 = TAtom (10);
+ XA_CUT_BUFFER2 = TAtom (11);
+ XA_CUT_BUFFER3 = TAtom (12);
+ XA_CUT_BUFFER4 = TAtom (13);
+ XA_CUT_BUFFER5 = TAtom (14);
+ XA_CUT_BUFFER6 = TAtom (15);
+ XA_CUT_BUFFER7 = TAtom (16);
+ XA_DRAWABLE = TAtom (17);
+ XA_FONT = TAtom (18);
+ XA_INTEGER = TAtom (19);
+ XA_PIXMAP = TAtom (20);
+ XA_POINT = TAtom (21);
+ XA_RECTANGLE = TAtom (22);
+ XA_RESOURCE_MANAGER = TAtom (23);
+ XA_RGB_COLOR_MAP = TAtom (24);
+ XA_RGB_BEST_MAP = TAtom (25);
+ XA_RGB_BLUE_MAP = TAtom (26);
+ XA_RGB_DEFAULT_MAP = TAtom (27);
+ XA_RGB_GRAY_MAP = TAtom (28);
+ XA_RGB_GREEN_MAP = TAtom (29);
+ XA_RGB_RED_MAP = TAtom (30);
+ XA_STRING = TAtom (31);
+ XA_VISUALID = TAtom (32);
+ XA_WINDOW = TAtom (33);
+ XA_WM_COMMAND = TAtom (34);
+ XA_WM_HINTS = TAtom (35);
+ XA_WM_CLIENT_MACHINE = TAtom (36);
+ XA_WM_ICON_NAME = TAtom (37);
+ XA_WM_ICON_SIZE = TAtom (38);
+ XA_WM_NAME = TAtom (39);
+ XA_WM_NORMAL_HINTS = TAtom (40);
+ XA_WM_SIZE_HINTS = TAtom (41);
+ XA_WM_ZOOM_HINTS = TAtom (42);
+ XA_MIN_SPACE = TAtom (43);
+ XA_NORM_SPACE = TAtom (44);
+ XA_MAX_SPACE = TAtom (45);
+ XA_END_SPACE = TAtom (46);
+ XA_SUPERSCRIPT_X = TAtom (47);
+ XA_SUPERSCRIPT_Y = TAtom (48);
+ XA_SUBSCRIPT_X = TAtom (49);
+ XA_SUBSCRIPT_Y = TAtom (50);
+ XA_UNDERLINE_POSITION = TAtom (51);
+ XA_UNDERLINE_THICKNESS = TAtom (52);
+ XA_STRIKEOUT_ASCENT = TAtom (53);
+ XA_STRIKEOUT_DESCENT = TAtom (54);
+ XA_ITALIC_ANGLE = TAtom (55);
+ XA_X_HEIGHT = TAtom (56);
+ XA_QUAD_WIDTH = TAtom (57);
+ XA_WEIGHT = TAtom (58);
+ XA_POINT_SIZE = TAtom (59);
+ XA_RESOLUTION = TAtom (60);
+ XA_COPYRIGHT = TAtom (61);
+ XA_NOTICE = TAtom (62);
+ XA_FONT_NAME = TAtom (63);
+ XA_FAMILY_NAME = TAtom (64);
+ XA_FULL_NAME = TAtom (65);
+ XA_CAP_HEIGHT = TAtom (66);
+ XA_WM_CLASS = TAtom (67);
+ XA_WM_TRANSIENT_FOR = TAtom (68);
+
+ XA_LAST_PREDEFINED = TAtom (68);
+
+implementation
+
+end.
diff --git a/packages/x11/src/xcms.pp b/packages/x11/src/xcms.pp
new file mode 100644
index 0000000000..b029fb5adf
--- /dev/null
+++ b/packages/x11/src/xcms.pp
@@ -0,0 +1,378 @@
+unit xcms;
+interface
+uses
+ x,xlib;
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from xcms.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xcms.h
+}
+
+
+{$PACKRECORDS C}
+
+
+const
+ XcmsFailure = 0;
+ XcmsSuccess = 1;
+ XcmsSuccessWithCompression = 2;
+type
+ PXcmsColorFormat = ^TXcmsColorFormat;
+ TXcmsColorFormat = dword;
+function XcmsUndefinedFormat : TXcmsColorFormat;
+
+function XcmsCIEXYZFormat : TXcmsColorFormat;
+
+function XcmsCIEuvYFormat : TXcmsColorFormat;
+
+function XcmsCIExyYFormat : TXcmsColorFormat;
+
+function XcmsCIELabFormat : TXcmsColorFormat;
+
+function XcmsCIELuvFormat : TXcmsColorFormat;
+
+function XcmsTekHVCFormat : TXcmsColorFormat;
+
+function XcmsRGBFormat : TXcmsColorFormat;
+
+function XcmsRGBiFormat : TXcmsColorFormat;
+
+
+const
+ XcmsInitNone = $00;
+ XcmsInitSuccess = $01;
+ XcmsInitFailure = $ff;
+{$ifdef MACROS}
+function DisplayOfCCC(ccc : longint) : longint;
+
+function ScreenNumberOfCCC(ccc : longint) : longint;
+
+function VisualOfCCC(ccc : longint) : longint;
+
+function ClientWhitePointOfCCC(ccc : longint) : longint;
+
+function ScreenWhitePointOfCCC(ccc : longint) : longint;
+
+function FunctionSetOfCCC(ccc : longint) : longint;
+{$endif MACROS}
+
+type
+
+ PXcmsFloat = ^TXcmsFloat;
+ TXcmsFloat = double;
+
+ PXcmsRGB = ^TXcmsRGB;
+ TXcmsRGB = record
+ red : word;
+ green : word;
+ blue : word;
+ end;
+
+ PXcmsRGBi = ^TXcmsRGBi;
+ TXcmsRGBi = record
+ red : TXcmsFloat;
+ green : TXcmsFloat;
+ blue : TXcmsFloat;
+ end;
+
+ PXcmsCIEXYZ = ^TXcmsCIEXYZ;
+ TXcmsCIEXYZ = record
+ X : TXcmsFloat;
+ Y : TXcmsFloat;
+ Z : TXcmsFloat;
+ end;
+
+ PXcmsCIEuvY = ^TXcmsCIEuvY;
+ TXcmsCIEuvY = record
+ u_prime : TXcmsFloat;
+ v_prime : TXcmsFloat;
+ Y : TXcmsFloat;
+ end;
+
+ PXcmsCIExyY = ^TXcmsCIExyY;
+ TXcmsCIExyY = record
+ x : TXcmsFloat;
+ y : TXcmsFloat;
+ _Y : TXcmsFloat;
+ end;
+
+ PXcmsCIELab = ^TXcmsCIELab;
+ TXcmsCIELab = record
+ L_star : TXcmsFloat;
+ a_star : TXcmsFloat;
+ b_star : TXcmsFloat;
+ end;
+
+ PXcmsCIELuv = ^TXcmsCIELuv;
+ TXcmsCIELuv = record
+ L_star : TXcmsFloat;
+ u_star : TXcmsFloat;
+ v_star : TXcmsFloat;
+ end;
+
+ PXcmsTekHVC = ^TXcmsTekHVC;
+ TXcmsTekHVC = record
+ H : TXcmsFloat;
+ V : TXcmsFloat;
+ C : TXcmsFloat;
+ end;
+
+ PXcmsPad = ^TXcmsPad;
+ TXcmsPad = record
+ pad0 : TXcmsFloat;
+ pad1 : TXcmsFloat;
+ pad2 : TXcmsFloat;
+ pad3 : TXcmsFloat;
+ end;
+
+ PXcmsColor = ^TXcmsColor;
+ TXcmsColor = record
+ spec : record
+ case longint of
+ 0 : ( RGB : TXcmsRGB );
+ 1 : ( RGBi : TXcmsRGBi );
+ 2 : ( CIEXYZ : TXcmsCIEXYZ );
+ 3 : ( CIEuvY : TXcmsCIEuvY );
+ 4 : ( CIExyY : TXcmsCIExyY );
+ 5 : ( CIELab : TXcmsCIELab );
+ 6 : ( CIELuv : TXcmsCIELuv );
+ 7 : ( TekHVC : TXcmsTekHVC );
+ 8 : ( Pad : TXcmsPad );
+ end;
+ pixel : dword;
+ format : TXcmsColorFormat;
+ end;
+
+ PXcmsPerScrnInfo = ^TXcmsPerScrnInfo;
+ TXcmsPerScrnInfo = record
+ screenWhitePt : TXcmsColor;
+ functionSet : TXPointer;
+ screenData : TXPointer;
+ state : byte;
+ pad : array[0..2] of char;
+ end;
+
+ PXcmsCCC = ^TXcmsCCC;
+
+ TXcmsCompressionProc = function (para1:PXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;
+
+ TXcmsWhiteAdjustProc = function (para1:PXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
+ para6:dword; para7:PBool):TStatus;cdecl;
+
+ TXcmsCCC = record
+ dpy : PDisplay;
+ screenNumber : longint;
+ visual : PVisual;
+ clientWhitePt : TXcmsColor;
+ gamutCompProc : TXcmsCompressionProc;
+ gamutCompClientData : TXPointer;
+ whitePtAdjProc : TXcmsWhiteAdjustProc;
+ whitePtAdjClientData : TXPointer;
+ pPerScrnInfo : PXcmsPerScrnInfo;
+ end;
+ TXcmsCCCRec = TXcmsCCC;
+ PXcmsCCCRec = ^TXcmsCCCRec;
+
+ TXcmsScreenInitProc = function (para1:PDisplay; para2:longint; para3:PXcmsPerScrnInfo):TStatus;cdecl;
+
+ TXcmsScreenFreeProc = procedure (para1:TXPointer);cdecl;
+
+ TXcmsConversionProc = procedure;cdecl;
+
+ PXcmsFuncListPtr = ^TXcmsFuncListPtr;
+ TXcmsFuncListPtr = TXcmsConversionProc;
+
+ TXcmsParseStringProc = function (para1:Pchar; para2:PXcmsColor):longint;cdecl;
+
+ PXcmsColorSpace = ^TXcmsColorSpace;
+ TXcmsColorSpace = record
+ prefix : Pchar;
+ id : TXcmsColorFormat;
+ parseString : TXcmsParseStringProc;
+ to_CIEXYZ : TXcmsFuncListPtr;
+ from_CIEXYZ : TXcmsFuncListPtr;
+ inverse_flag : longint;
+ end;
+
+ PXcmsFunctionSet = ^TXcmsFunctionSet;
+ TXcmsFunctionSet = record
+ DDColorSpaces : ^PXcmsColorSpace;
+ screenInitProc : TXcmsScreenInitProc;
+ screenFreeProc : TXcmsScreenFreeProc;
+ end;
+(* error
+extern Status XcmsAddColorSpace (
+in declaration at line 323 *)
+
+function XcmsAddFunctionSet(para1:PXcmsFunctionSet):TStatus;cdecl;external libX11;
+function XcmsAllocColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:TXcmsColorFormat):TStatus;cdecl;external libX11;
+function XcmsAllocNamedColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:PXcmsColor; para5:PXcmsColor;
+ para6:TXcmsColorFormat):TStatus;cdecl;external libX11;
+function XcmsCCCOfColormap(para1:PDisplay; para2:TColormap):TXcmsCCC;cdecl;external libX11;
+function XcmsCIELabClipab(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELabClipL(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELabClipLab(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELabQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELabQueryMaxL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELabQueryMaxLC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELabQueryMinL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELabToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIELabWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
+ para6:dword; para7:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELuvClipL(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELuvClipLuv(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELuvClipuv(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCIELuvQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELuvQueryMaxL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELuvQueryMaxLC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELuvQueryMinL(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsCIELuvToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIELuvWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
+ para6:dword; para7:PBool):TStatus;cdecl;external libX11;
+function XcmsCIEXYZToCIELab(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIEXYZToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIEXYZToCIExyY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIEXYZToRGBi(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
+function XcmsCIEuvYToCIELuv(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIEuvYToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIEuvYToTekHVC(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsCIExyYToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsClientWhitePointOfCCC(para1:TXcmsCCC):PXcmsColor;cdecl;external libX11;
+function XcmsConvertColors(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:TXcmsColorFormat; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsCreateCCC(para1:PDisplay; para2:longint; para3:PVisual; para4:PXcmsColor; para5:TXcmsCompressionProc;
+ para6:TXPointer; para7:TXcmsWhiteAdjustProc; para8:TXPointer):TXcmsCCC;cdecl;external libX11;
+function XcmsDefaultCCC(para1:PDisplay; para2:longint):TXcmsCCC;cdecl;external libX11;
+function XcmsDisplayOfCCC(para1:TXcmsCCC):PDisplay;cdecl;external libX11;
+function XcmsFormatOfPrefix(para1:Pchar):TXcmsColorFormat;cdecl;external libX11;
+procedure XcmsFreeCCC(para1:TXcmsCCC);cdecl;external libX11;
+function XcmsLookupColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:PXcmsColor; para5:PXcmsColor;
+ para6:TXcmsColorFormat):TStatus;cdecl;external libX11;
+function XcmsPrefixOfFormat(para1:TXcmsColorFormat):Pchar;cdecl;external libX11;
+function XcmsQueryBlack(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsQueryBlue(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsQueryColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:TXcmsColorFormat):TStatus;cdecl;external libX11;
+function XcmsQueryColors(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:dword; para5:TXcmsColorFormat):TStatus;cdecl;external libX11;
+function XcmsQueryGreen(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsQueryRed(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsQueryWhite(para1:TXcmsCCC; para2:TXcmsColorFormat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsRGBiToCIEXYZ(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
+function XcmsRGBiToRGB(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
+function XcmsRGBToRGBi(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:PBool):TStatus;cdecl;external libX11;
+function XcmsScreenNumberOfCCC(para1:TXcmsCCC):longint;cdecl;external libX11;
+function XcmsScreenWhitePointOfCCC(para1:TXcmsCCC):PXcmsColor;cdecl;external libX11;
+function XcmsSetCCCOfColormap(para1:PDisplay; para2:TColormap; para3:TXcmsCCC):TXcmsCCC;cdecl;external libX11;
+function XcmsSetCompressionProc(para1:TXcmsCCC; para2:TXcmsCompressionProc; para3:TXPointer):TXcmsCompressionProc;cdecl;external libX11;
+function XcmsSetWhiteAdjustProc(para1:TXcmsCCC; para2:TXcmsWhiteAdjustProc; para3:TXPointer):TXcmsWhiteAdjustProc;cdecl;external libX11;
+function XcmsSetWhitePoint(para1:TXcmsCCC; para2:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsStoreColor(para1:PDisplay; para2:TColormap; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsStoreColors(para1:PDisplay; para2:TColormap; para3:PXcmsColor; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsTekHVCClipC(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsTekHVCClipV(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsTekHVCClipVC(para1:TXcmsCCC; para2:PXcmsColor; para3:dword; para4:dword; para5:PBool):TStatus;cdecl;external libX11;
+function XcmsTekHVCQueryMaxC(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsTekHVCQueryMaxV(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsTekHVCQueryMaxVC(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsTekHVCQueryMaxVSamples(para1:TXcmsCCC; para2:TXcmsFloat; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsTekHVCQueryMinV(para1:TXcmsCCC; para2:TXcmsFloat; para3:TXcmsFloat; para4:PXcmsColor):TStatus;cdecl;external libX11;
+function XcmsTekHVCToCIEuvY(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:dword):TStatus;cdecl;external libX11;
+function XcmsTekHVCWhiteShiftColors(para1:TXcmsCCC; para2:PXcmsColor; para3:PXcmsColor; para4:TXcmsColorFormat; para5:PXcmsColor;
+ para6:dword; para7:PBool):TStatus;cdecl;external libX11;
+function XcmsVisualOfCCC(para1:TXcmsCCC):PVisual;cdecl;external libX11;
+
+
+implementation
+
+function XcmsUndefinedFormat : TXcmsColorFormat;
+ begin
+ XcmsUndefinedFormat:=TXcmsColorFormat($00000000);
+ end;
+
+function XcmsCIEXYZFormat : TXcmsColorFormat;
+ begin
+ XcmsCIEXYZFormat:=TXcmsColorFormat($00000001);
+ end;
+
+function XcmsCIEuvYFormat : TXcmsColorFormat;
+ begin
+ XcmsCIEuvYFormat:=TXcmsColorFormat($00000002);
+ end;
+
+function XcmsCIExyYFormat : TXcmsColorFormat;
+ begin
+ XcmsCIExyYFormat:=TXcmsColorFormat($00000003);
+ end;
+
+function XcmsCIELabFormat : TXcmsColorFormat;
+ begin
+ XcmsCIELabFormat:=TXcmsColorFormat($00000004);
+ end;
+
+function XcmsCIELuvFormat : TXcmsColorFormat;
+ begin
+ XcmsCIELuvFormat:=TXcmsColorFormat($00000005);
+ end;
+
+function XcmsTekHVCFormat : TXcmsColorFormat;
+ begin
+ XcmsTekHVCFormat:=TXcmsColorFormat($00000006);
+ end;
+
+function XcmsRGBFormat : TXcmsColorFormat;
+ begin
+ XcmsRGBFormat:=TXcmsColorFormat($80000000);
+ end;
+
+function XcmsRGBiFormat : TXcmsColorFormat;
+ begin
+ XcmsRGBiFormat:=TXcmsColorFormat($80000001);
+ end;
+
+{$ifdef MACROS}
+function DisplayOfCCC(ccc : longint) : longint;
+begin
+ DisplayOfCCC:=ccc^.dpy;
+end;
+
+function ScreenNumberOfCCC(ccc : longint) : longint;
+begin
+ ScreenNumberOfCCC:=ccc^.screenNumber;
+end;
+
+function VisualOfCCC(ccc : longint) : longint;
+begin
+ VisualOfCCC:=ccc^.visual;
+end;
+
+function ClientWhitePointOfCCC(ccc : longint) : longint;
+begin
+ ClientWhitePointOfCCC:=@(ccc^.clientWhitePt);
+end;
+
+function ScreenWhitePointOfCCC(ccc : longint) : longint;
+begin
+ ScreenWhitePointOfCCC:=@(ccc^.(pPerScrnInfo^.screenWhitePt));
+end;
+
+function FunctionSetOfCCC(ccc : longint) : longint;
+begin
+ FunctionSetOfCCC:=ccc^.(pPerScrnInfo^.functionSet);
+end;
+{$endif MACROS}
+
+end.
diff --git a/packages/x11/src/xf86dga.pp b/packages/x11/src/xf86dga.pp
new file mode 100644
index 0000000000..3510f31d12
--- /dev/null
+++ b/packages/x11/src/xf86dga.pp
@@ -0,0 +1,279 @@
+{
+ Copyright (c) 1999 XFree86 Inc
+}
+{ $XFree86: xc/include/extensions/xf86dga.h,v 3.20 1999/10/13 04:20:48 dawes Exp $ }
+
+Unit xf86dga;
+
+{$PACKRECORDS C}
+
+Interface
+
+Uses
+ ctypes, x, xlib;
+
+Const
+ libXxf86dga='Xxf86dga';
+
+Type
+ cfloat = Single;
+
+{$linklib Xext}
+
+{$INCLUDE xf86dga1.inc}
+
+Const
+ X_XDGAQueryVersion = 0;
+
+{ 1 through 9 are in xf86dga1.pp }
+
+{ 10 and 11 are reserved to avoid conflicts with rogue DGA extensions }
+
+ X_XDGAQueryModes = 12;
+ X_XDGASetMode = 13;
+ X_XDGASetViewport = 14;
+ X_XDGAInstallColormap = 15;
+ X_XDGASelectInput = 16;
+ X_XDGAFillRectangle = 17;
+ X_XDGACopyArea = 18;
+ X_XDGACopyTransparentArea = 19;
+ X_XDGAGetViewportStatus = 20;
+ X_XDGASync = 21;
+ X_XDGAOpenFramebuffer = 22;
+ X_XDGACloseFramebuffer = 23;
+ X_XDGASetClientVersion = 24;
+ X_XDGAChangePixmapMode = 25;
+ X_XDGACreateColormap = 26;
+
+
+ XDGAConcurrentAccess = $00000001;
+ XDGASolidFillRect = $00000002;
+ XDGABlitRect = $00000004;
+ XDGABlitTransRect = $00000008;
+ XDGAPixmap = $00000010;
+
+ XDGAInterlaced = $00010000;
+ XDGADoublescan = $00020000;
+
+ XDGAFlipImmediate = $00000001;
+ XDGAFlipRetrace = $00000002;
+
+ XDGANeedRoot = $00000001;
+
+ XF86DGANumberEvents = 7;
+
+ XDGAPixmapModeLarge = 0;
+ XDGAPixmapModeSmall = 1;
+
+ XF86DGAClientNotLocal = 0;
+ XF86DGANoDirectVideoMode = 1;
+ XF86DGAScreenNotActive = 2;
+ XF86DGADirectNotActivated = 3;
+ XF86DGAOperationNotSupported = 4;
+ XF86DGANumberErrors = (XF86DGAOperationNotSupported + 1);
+
+Type
+ PXDGAMode = ^TXDGAMode;
+ TXDGAMode = Record
+ num : cint; { A unique identifier for the mode (num > 0) }
+ name : PChar; { name of mode given in the XF86Config }
+ verticalRefresh : cfloat;
+ flags : cint; { DGA_CONCURRENT_ACCESS, etc... }
+ imageWidth : cint; { linear accessible portion (pixels) }
+ imageHeight : cint;
+ pixmapWidth : cint; { Xlib accessible portion (pixels) }
+ pixmapHeight : cint; { both fields ignored if no concurrent access }
+ bytesPerScanline : cint;
+ byteOrder : cint; { MSBFirst, LSBFirst }
+ depth : cint;
+ bitsPerPixel : cint;
+ redMask : culong;
+ greenMask : culong;
+ blueMask : culong;
+ visualClass : cshort;
+ viewportWidth : cint;
+ viewportHeight : cint;
+ xViewportStep : cint; { viewport position granularity }
+ yViewportStep : cint;
+ maxViewportX : cint; { max viewport origin }
+ maxViewportY : cint;
+ viewportFlags : cint; { types of page flipping possible }
+ reserved1 : cint;
+ reserved2 : cint;
+ End;
+
+ PXDGADevice = ^TXDGADevice;
+ TXDGADevice = Record
+ mode : TXDGAMode;
+ data : Pcuchar;
+ pixmap : TPixmap;
+ End;
+
+ PXDGAButtonEvent = ^TXDGAButtonEvent;
+ TXDGAButtonEvent = Record
+ _type : cint;
+ serial : culong;
+ display : PDisplay;
+ screen : cint;
+ time : TTime;
+ state : cuint;
+ button : cuint;
+ End;
+
+ PXDGAKeyEvent = ^TXDGAKeyEvent;
+ TXDGAKeyEvent = Record
+ _type : cint;
+ serial : culong;
+ display : PDisplay;
+ screen : cint;
+ time : TTime;
+ state : cuint;
+ keycode : cuint;
+ End;
+
+ PXDGAMotionEvent = ^TXDGAMotionEvent;
+ TXDGAMotionEvent = Record
+ _type : cint;
+ serial : culong;
+ display : PDisplay;
+ screen : cint;
+ time : TTime;
+ state : cuint;
+ dx : cint;
+ dy : cint;
+ End;
+
+ PXDGAEvent = ^TXDGAEvent;
+ TXDGAEvent = Record
+ Case LongInt Of
+ 0 : (_type : cint);
+ 1 : (xbutton : TXDGAButtonEvent);
+ 2 : (xkey : TXDGAKeyEvent);
+ 3 : (xmotion : TXDGAMotionEvent);
+ 4 : (pad : Array[0..23] Of clong);
+ End;
+
+Function XDGAQueryExtension(
+ dpy : PDisplay;
+ eventBase : Pcint;
+ erroBase : Pcint
+ ) : TBool; CDecl; External libXxf86dga;
+
+Function XDGAQueryVersion(
+ dpy : PDisplay;
+ majorVersion : Pcint;
+ minorVersion : Pcint
+ ) : TBool; CDecl; External libXxf86dga;
+
+Function XDGAQueryModes(
+ dpy : PDisplay;
+ screen : cint;
+ num : Pcint
+ ) : PXDGAMode; CDecl; External libXxf86dga;
+
+Function XDGASetMode(
+ dpy : PDisplay;
+ screen : cint;
+ mode : cint
+ ) : PXDGADevice; CDecl; External libXxf86dga;
+
+Function XDGAOpenFramebuffer(
+ dpy : PDisplay;
+ screen : cint
+ ) : TBool; CDecl; External libXxf86dga;
+
+Procedure XDGACloseFramebuffer(
+ dpy : PDisplay;
+ screen : cint
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGASetViewport(
+ dpy : PDisplay;
+ screen : cint;
+ x : cint;
+ y : cint;
+ flags : cint
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGAInstallColormap(
+ dpy : PDisplay;
+ screen : cint;
+ cmap : TColormap
+ ); CDecl; External libXxf86dga;
+
+Function XDGACreateColormap(
+ dpy : PDisplay;
+ screen : cint;
+ device : PXDGADevice;
+ alloc : cint
+ ) : TColormap; CDecl; External libXxf86dga;
+
+Procedure XDGASelectInput(
+ dpy : PDisplay;
+ screen : cint;
+ event_mask : clong
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGAFillRectangle(
+ dpy : PDisplay;
+ screen : cint;
+ x : cint;
+ y : cint;
+ width : cuint;
+ height : cuint;
+ color : culong
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGACopyArea(
+ dpy : PDisplay;
+ screen : cint;
+ srcx : cint;
+ srcy : cint;
+ width : cuint;
+ height : cuint;
+ dstx : cint;
+ dsty : cint
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGACopyTransparentArea(
+ dpy : PDisplay;
+ screen : cint;
+ srcx : cint;
+ srcy : cint;
+ width : cuint;
+ height : cuint;
+ dstx : cint;
+ dsty : cint;
+ key : culong
+ ); CDecl; External libXxf86dga;
+
+Function XDGAGetViewportStatus(
+ dpy : PDisplay;
+ screen : cint
+ ) : cint; CDecl; External libXxf86dga;
+
+Procedure XDGASync(
+ dpy : PDisplay;
+ screen : cint
+ ); CDecl; External libXxf86dga;
+
+Function XDGASetClientVersion(
+ dpy : PDisplay
+ ) : TBool; CDecl; External libXxf86dga;
+
+Procedure XDGAChangePixmapMode(
+ dpy : PDisplay;
+ screen : cint;
+ x : Pcint;
+ y : Pcint;
+ mode : cint
+ ); CDecl; External libXxf86dga;
+
+Procedure XDGAKeyEventToXKeyEvent(
+ dk : PXDGAKeyEvent;
+ xk : PXKeyEvent
+ ); CDecl; External libXxf86dga;
+
+Implementation
+
+End.
diff --git a/packages/x11/src/xf86dga1.inc b/packages/x11/src/xf86dga1.inc
new file mode 100644
index 0000000000..3a6f3f7af6
--- /dev/null
+++ b/packages/x11/src/xf86dga1.inc
@@ -0,0 +1,125 @@
+{ $XFree86: xc/include/extensions/xf86dga1.h,v 1.2 1999/04/17 07:05:41 dawes Exp $ }
+{
+
+Copyright (c) 1995 Jon Tombs
+Copyright (c) 1995 XFree86 Inc
+
+}
+
+{************************************************************************
+
+ THIS IS THE OLD DGA API AND IS OBSOLETE. PLEASE DO NOT USE IT ANYMORE
+
+************************************************************************}
+
+Type
+ PPcchar = ^Pcchar;
+
+Const
+ X_XF86DGAQueryVersion = 0;
+ X_XF86DGAGetVideoLL = 1;
+ X_XF86DGADirectVideo = 2;
+ X_XF86DGAGetViewPortSize = 3;
+ X_XF86DGASetViewPort = 4;
+ X_XF86DGAGetVidPage = 5;
+ X_XF86DGASetVidPage = 6;
+ X_XF86DGAInstallColormap = 7;
+ X_XF86DGAQueryDirectVideo = 8;
+ X_XF86DGAViewPortChanged = 9;
+
+ XF86DGADirectPresent = $0001;
+ XF86DGADirectGraphics = $0002;
+ XF86DGADirectMouse = $0004;
+ XF86DGADirectKeyb = $0008;
+ XF86DGAHasColormap = $0100;
+ XF86DGADirectColormap = $0200;
+
+Function XF86DGAQueryVersion(
+ dpy : PDisplay;
+ majorVersion : Pcint;
+ minorVersion : Pcint
+ ) : TBool; CDecl; External libXxf86dga;
+
+Function XF86DGAQueryExtension(
+ dpy : PDisplay;
+ event_base : Pcint;
+ error_base : Pcint
+ ) : TBool; CDecl; External libXxf86dga;
+
+Function XF86DGAGetVideoLL(
+ dpy : PDisplay;
+ screen : cint;
+ base_addr : Pcint;
+ width : Pcint;
+ bank_size : Pcint;
+ ram_size : Pcint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAGetVideo(
+ dpy : PDisplay;
+ screen : cint;
+ base_addr : PPcchar;
+ width : Pcint;
+ bank_size : Pcint;
+ ram_size : Pcint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGADirectVideo(
+ dpy : PDisplay;
+ screen : cint;
+ enable : cint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGADirectVideoLL(
+ dpy : PDisplay;
+ screen : cint;
+ enable : cint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAGetViewPortSize(
+ dpy : PDisplay;
+ screen : cint;
+ width : Pcint;
+ height : Pcint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGASetViewPort(
+ dpy : PDisplay;
+ screen : cint;
+ x : cint;
+ y : cint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAGetVidPage(
+ dpy : PDisplay;
+ screen : cint;
+ vid_page : Pcint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGASetVidPage(
+ dpy : PDisplay;
+ screen : cint;
+ vid_page : cint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAInstallColormap(
+ dpy : PDisplay;
+ screen : cint;
+ Colormap : TColormap
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAForkApp(
+ screen : cint
+ ) : cint; CDecl; External libXxf86dga;
+
+Function XF86DGAQueryDirectVideo(
+ dpy : PDisplay;
+ screen : cint;
+ flags : Pcint
+ ) : TStatus; CDecl; External libXxf86dga;
+
+Function XF86DGAViewPortChanged(
+ dpy : PDisplay;
+ screen : cint;
+ n : cint
+ ) : TBool; CDecl; External libXxf86dga;
diff --git a/packages/x11/src/xf86vmode.pp b/packages/x11/src/xf86vmode.pp
new file mode 100644
index 0000000000..f61115e6f4
--- /dev/null
+++ b/packages/x11/src/xf86vmode.pp
@@ -0,0 +1,339 @@
+{ $XFree86: xc/include/extensions/xf86vmode.h,v 3.30 2001/05/07 20:09:50 mvojkovi Exp $ }
+{
+
+Copyright 1995 Kaleb S. KEITHLEY
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL Kaleb S. KEITHLEY BE LIABLE FOR ANY CLAIM, DAMAGES
+OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Kaleb S. KEITHLEY
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from Kaleb S. KEITHLEY
+
+}
+{ $Xorg: xf86vmode.h,v 1.3 2000/08/18 04:05:46 coskrey Exp $ }
+
+{ THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION }
+
+Unit xf86vmode;
+
+{$PACKRECORDS c}
+{$DEFINE MACROS}
+
+Interface
+
+Uses
+ ctypes, x, xlib;
+
+Const
+ libXxf86vm = 'Xxf86vm';
+
+Type
+ PINT32 = ^LongInt; {INT32 *}
+
+Const
+ X_XF86VidModeQueryVersion = 0;
+ X_XF86VidModeGetModeLine = 1;
+ X_XF86VidModeModModeLine = 2;
+ X_XF86VidModeSwitchMode = 3;
+ X_XF86VidModeGetMonitor = 4;
+ X_XF86VidModeLockModeSwitch = 5;
+ X_XF86VidModeGetAllModeLines = 6;
+ X_XF86VidModeAddModeLine = 7;
+ X_XF86VidModeDeleteModeLine = 8;
+ X_XF86VidModeValidateModeLine = 9;
+ X_XF86VidModeSwitchToMode = 10;
+ X_XF86VidModeGetViewPort = 11;
+ X_XF86VidModeSetViewPort = 12;
+{ new for version 2.x of this extension }
+ X_XF86VidModeGetDotClocks = 13;
+ X_XF86VidModeSetClientVersion = 14;
+ X_XF86VidModeSetGamma = 15;
+ X_XF86VidModeGetGamma = 16;
+ X_XF86VidModeGetGammaRamp = 17;
+ X_XF86VidModeSetGammaRamp = 18;
+ X_XF86VidModeGetGammaRampSize = 19;
+ X_XF86VidModeGetPermissions = 20;
+
+ CLKFLAG_PROGRAMABLE = 1;
+
+{$IFDEF XF86VIDMODE_EVENTS}
+ XF86VidModeNotify = 0;
+ XF86VidModeNumberEvents = (XF86VidModeNotify + 1);
+
+ XF86VidModeNotifyMask = $00000001;
+
+ XF86VidModeNonEvent = 0;
+ XF86VidModeModeChange = 1;
+{$ELSE XF86VIDMODE_EVENTS}
+ XF86VidModeNumberEvents = 0;
+{$ENDIF XF86VIDMODE_EVENTS}
+
+ XF86VidModeBadClock = 0;
+ XF86VidModeBadHTimings = 1;
+ XF86VidModeBadVTimings = 2;
+ XF86VidModeModeUnsuitable = 3;
+ XF86VidModeExtensionDisabled = 4;
+ XF86VidModeClientNotLocal = 5;
+ XF86VidModeZoomLocked = 6;
+ XF86VidModeNumberErrors = (XF86VidModeZoomLocked + 1);
+
+ XF86VM_READ_PERMISSION = 1;
+ XF86VM_WRITE_PERMISSION = 2;
+
+Type
+ PXF86VidModeModeLine = ^TXF86VidModeModeLine;
+ TXF86VidModeModeLine = Record
+ hdisplay : cushort;
+ hsyncstart : cushort;
+ hsyncend : cushort;
+ htotal : cushort;
+ hskew : cushort;
+ vdisplay : cushort;
+ vsyncstart : cushort;
+ vsyncend : cushort;
+ vtotal : cushort;
+ flags : cuint;
+ privsize : cint;
+ c_private : PINT32;
+ End;
+
+ PPPXF86VidModeModeInfo = ^PPXF86VidModeModeInfo;
+ PPXF86VidModeModeInfo = ^PXF86VidModeModeInfo;
+ PXF86VidModeModeInfo = ^TXF86VidModeModeInfo;
+ TXF86VidModeModeInfo = Record
+ dotclock : cuint;
+ hdisplay : cushort;
+ hsyncstart : cushort;
+ hsyncend : cushort;
+ htotal : cushort;
+ hskew : cushort;
+ vdisplay : cushort;
+ vsyncstart : cushort;
+ vsyncend : cushort;
+ vtotal : cushort;
+ flags : cuint;
+ privsize : cint;
+ c_private : PINT32;
+ End;
+
+ PXF86VidModeSyncRange = ^TXF86VidModeSyncRange;
+ TXF86VidModeSyncRange = Record
+ hi : cfloat;
+ lo : cfloat;
+ End;
+
+ PXF86VidModeMonitor = ^TXF86VidModeMonitor;
+ TXF86VidModeMonitor = Record
+ vendor : PChar;
+ model : PChar;
+ EMPTY : cfloat;
+ nhsync : cuchar;
+ hsync : PXF86VidModeSyncRange;
+ nvsync : cuchar;
+ vsync : PXF86VidModeSyncRange;
+ End;
+
+ PXF86VidModeNotifyEvent = ^TXF86VidModeNotifyEvent;
+ TXF86VidModeNotifyEvent = Record
+ _type : cint; { of event }
+ serial : culong; { # of last request processed by server }
+ send_event : TBool; { true if this came from a SendEvent req }
+ display : PDisplay; { Display the event was read from }
+ root : TWindow; { root window of event screen }
+ state : cint; { What happened }
+ kind : cint; { What happened }
+ forced : TBool; { extents of new region }
+ time : TTime; { event timestamp }
+ End;
+
+ PXF86VidModeGamma = ^TXF86VidModeGamma;
+ TXF86VidModeGamma = Record
+ red : cfloat; { Red Gamma value }
+ green : cfloat; { Green Gamma value }
+ blue : cfloat; { Blue Gamma value }
+ End;
+
+{$IFDEF MACROS}
+Function XF86VidModeSelectNextMode(disp : PDisplay; scr : cint) : TBool;
+Function XF86VidModeSelectPrevMode(disp : PDisplay; scr : cint) : TBool;
+{$ENDIF MACROS}
+
+Function XF86VidModeQueryVersion(
+ dpy : PDisplay;
+ majorVersion : Pcint;
+ minorVersion : Pcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeQueryExtension(
+ dpy : PDisplay;
+ event_base : Pcint;
+ error_base : Pcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeSetClientVersion(
+ dpy : PDisplay
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetModeLine(
+ dpy : PDisplay;
+ screen : cint;
+ dotclock : Pcint;
+ modeline : PXF86VidModeModeLine
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetAllModeLines(
+ dpy : PDisplay;
+ screen : cint;
+ modecount : Pcint;
+ modelinesPtr : PPPXF86VidModeModeInfo
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeAddModeLine(
+ dpy : PDisplay;
+ screen : cint;
+ new_modeline : PXF86VidModeModeInfo;
+ after_modeline : PXF86VidModeModeInfo
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeDeleteModeLine(
+ dpy : PDisplay;
+ screen : cint;
+ modeline : PXF86VidModeModeInfo
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeModModeLine(
+ dpy : PDisplay;
+ screen : cint;
+ modeline : PXF86VidModeModeLine
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeValidateModeLine(
+ dpy : PDisplay;
+ screen : cint;
+ modeline : PXF86VidModeModeInfo
+ ) : TStatus; CDecl; External libXxf86vm;
+
+Function XF86VidModeSwitchMode(
+ dpy : PDisplay;
+ screen : cint;
+ zoom : cint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeSwitchToMode(
+ dpy : PDisplay;
+ screen : cint;
+ modeline : PXF86VidModeModeInfo
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeLockModeSwitch(
+ dpy : PDisplay;
+ screen : cint;
+ lock : cint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetMonitor(
+ dpy : PDisplay;
+ screen : cint;
+ monitor : PXF86VidModeMonitor
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetViewPort(
+ dpy : PDisplay;
+ screen : cint;
+ x_return : Pcint;
+ y_return : Pcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeSetViewPort(
+ dpy : PDisplay;
+ screen : cint;
+ x : cint;
+ y : cint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetDotClocks(
+ dpy : PDisplay;
+ screen : cint;
+ flags_return : Pcint;
+ number_of_clocks_return : Pcint;
+ max_dot_clock_return : Pcint;
+ clocks_return : PPcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetGamma(
+ dpy : PDisplay;
+ screen : cint;
+ Gamma : PXF86VidModeGamma
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeSetGamma(
+ dpy : PDisplay;
+ screen : cint;
+ Gamma : PXF86VidModeGamma
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeSetGammaRamp(
+ dpy : PDisplay;
+ screen : cint;
+ size : cint;
+ red_array : Pcushort;
+ green_array : Pcushort;
+ blue_array : Pcushort
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetGammaRamp(
+ dpy : PDisplay;
+ screen : cint;
+ size : cint;
+ red_array : Pcushort;
+ green_array : Pcushort;
+ blue_array : Pcushort
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetGammaRampSize(
+ dpy : PDisplay;
+ screen : cint;
+ size : Pcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Function XF86VidModeGetPermissions(
+ dpy : PDisplay;
+ screen : cint;
+ permissions : Pcint
+ ) : TBool; CDecl; External libXxf86vm;
+
+Implementation
+
+{$IFDEF MACROS}
+Function XF86VidModeSelectNextMode(disp : PDisplay; scr : cint) : TBool;
+
+Begin
+ XF86VidModeSelectNextMode := XF86VidModeSwitchMode(disp, scr, 1);
+End;
+
+Function XF86VidModeSelectPrevMode(disp : PDisplay; scr : cint) : TBool;
+
+Begin
+ XF86VidModeSelectPrevMode := XF86VidModeSwitchMode(disp, scr, -1);
+End;
+{$ENDIF MACROS}
+
+End.
diff --git a/packages/x11/src/xi.pp b/packages/x11/src/xi.pp
new file mode 100644
index 0000000000..96e6fccabf
--- /dev/null
+++ b/packages/x11/src/xi.pp
@@ -0,0 +1,323 @@
+{
+ $Xorg: XI.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $
+
+************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+Copyright 1989 by Hewlett-Packard Company, Palo Alto, California.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Hewlett-Packard not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+********************************************************/
+ $XFree86: xc/include/extensions/XI.h,v 1.5 2001/12/14 19:53:28 dawes Exp $
+
+ Definitions used by the server, library and client
+
+ Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
+
+Histroy:
+ 2004/10/15 - Fixed a bug of accessing second based records by removing "paced record" and chnaged it to
+ "reocrd" only.
+ 2004/10/07 - Removed the "uses X;" line. The unit does not need it.
+ 2004/10/03 - Conversion from C header to Pascal unit.
+}
+{$PACKRECORDS C} {$MACRO ON} {$DEFINE MACROS}
+{$MODE OBJFPC}
+unit xi;
+interface
+
+const
+ sz_xGetExtensionVersionReq = 8;
+ sz_xGetExtensionVersionReply = 32;
+ sz_xListInputDevicesReq = 4;
+ sz_xListInputDevicesReply = 32;
+ sz_xOpenDeviceReq = 8;
+ sz_xOpenDeviceReply = 32;
+ sz_xCloseDeviceReq = 8;
+ sz_xSetDeviceModeReq = 8;
+ sz_xSetDeviceModeReply = 32;
+ sz_xSelectExtensionEventReq = 12;
+ sz_xGetSelectedExtensionEventsReq = 8;
+ sz_xGetSelectedExtensionEventsReply = 32;
+ sz_xChangeDeviceDontPropagateListReq = 12;
+ sz_xGetDeviceDontPropagateListReq = 8;
+ sz_xGetDeviceDontPropagateListReply = 32;
+ sz_xGetDeviceMotionEventsReq = 16;
+ sz_xGetDeviceMotionEventsReply = 32;
+ sz_xChangeKeyboardDeviceReq = 8;
+ sz_xChangeKeyboardDeviceReply = 32;
+ sz_xChangePointerDeviceReq = 8;
+ sz_xChangePointerDeviceReply = 32;
+ sz_xGrabDeviceReq = 20;
+ sz_xGrabDeviceReply = 32;
+ sz_xUngrabDeviceReq = 12;
+ sz_xGrabDeviceKeyReq = 20;
+ sz_xGrabDeviceKeyReply = 32;
+ sz_xUngrabDeviceKeyReq = 16;
+ sz_xGrabDeviceButtonReq = 20;
+ sz_xGrabDeviceButtonReply = 32;
+ sz_xUngrabDeviceButtonReq = 16;
+ sz_xAllowDeviceEventsReq = 12;
+ sz_xGetDeviceFocusReq = 8;
+ sz_xGetDeviceFocusReply = 32;
+ sz_xSetDeviceFocusReq = 16;
+ sz_xGetFeedbackControlReq = 8;
+ sz_xGetFeedbackControlReply = 32;
+ sz_xChangeFeedbackControlReq = 12;
+ sz_xGetDeviceKeyMappingReq = 8;
+ sz_xGetDeviceKeyMappingReply = 32;
+ sz_xChangeDeviceKeyMappingReq = 8;
+ sz_xGetDeviceModifierMappingReq = 8;
+ sz_xSetDeviceModifierMappingReq = 8;
+ sz_xSetDeviceModifierMappingReply = 32;
+ sz_xGetDeviceButtonMappingReq = 8;
+ sz_xGetDeviceButtonMappingReply = 32;
+ sz_xSetDeviceButtonMappingReq = 8;
+ sz_xSetDeviceButtonMappingReply = 32;
+ sz_xQueryDeviceStateReq = 8;
+ sz_xQueryDeviceStateReply = 32;
+ sz_xSendExtensionEventReq = 16;
+ sz_xDeviceBellReq = 8;
+ sz_xSetDeviceValuatorsReq = 8;
+ sz_xSetDeviceValuatorsReply = 32;
+ sz_xGetDeviceControlReq = 8;
+ sz_xGetDeviceControlReply = 32;
+ sz_xChangeDeviceControlReq = 8;
+ sz_xChangeDeviceControlReply = 32;
+
+const
+ INAME = 'XInputExtension';
+
+const
+ XI_KEYBOARD = 'KEYBOARD';
+ XI_MOUSE = 'MOUSE';
+ XI_TABLET = 'TABLET';
+ XI_TOUCHSCREEN = 'TOUCHSCREEN';
+ XI_TOUCHPAD = 'TOUCHPAD';
+ XI_BARCODE = 'BARCODE';
+ XI_BUTTONBOX = 'BUTTONBOX';
+ XI_KNOB_BOX = 'KNOB_BOX';
+ XI_ONE_KNOB = 'ONE_KNOB';
+ XI_NINE_KNOB = 'NINE_KNOB';
+ XI_TRACKBALL = 'TRACKBALL';
+ XI_QUADRATURE = 'QUADRATURE';
+ XI_ID_MODULE = 'ID_MODULE';
+ XI_SPACEBALL = 'SPACEBALL';
+ XI_DATAGLOVE = 'DATAGLOVE';
+ XI_EYETRACKER = 'EYETRACKER';
+ XI_CURSORKEYS = 'CURSORKEYS';
+ XI_FOOTMOUSE = 'FOOTMOUSE';
+
+const
+ Dont_Check = 0;
+ XInput_Initial_Release = 1;
+ XInput_Add_XDeviceBell = 2;
+ XInput_Add_XSetDeviceValuators = 3;
+ XInput_Add_XChangeDeviceControl = 4;
+
+const
+ XI_Absent = 0;
+ XI_Present = 1;
+
+const
+ XI_Initial_Release_Major = 1;
+ XI_Initial_Release_Minor = 0;
+
+const
+ XI_Add_XDeviceBell_Major = 1;
+ XI_Add_XDeviceBell_Minor = 1;
+
+const
+ XI_Add_XSetDeviceValuators_Major = 1;
+ XI_Add_XSetDeviceValuators_Minor = 2;
+
+const
+ XI_Add_XChangeDeviceControl_Major = 1;
+ XI_Add_XChangeDeviceControl_Minor = 3;
+
+const
+ DEVICE_RESOLUTION = 1;
+
+const
+ NoSuchExtension = 1;
+
+const
+ COUNT = 0;
+ CREATE = 1;
+
+const
+ NewPointer = 0;
+ NewKeyboard = 1;
+
+const
+ XPOINTER = 0;
+ XKEYBOARD = 1;
+
+const
+ UseXKeyboard = $FF;
+
+const
+ IsXPointer = 0;
+ IsXKeyboard = 1;
+ IsXExtensionDevice = 2;
+
+const
+ AsyncThisDevice = 0;
+ SyncThisDevice = 1;
+ ReplayThisDevice = 2;
+ AsyncOtherDevices = 3;
+ AsyncAll = 4;
+ SyncAll = 5;
+
+const
+ FollowKeyboard = 3;
+{$ifndef RevertToFollowKeyboard}
+ {$IFDEF MACROS}
+ {$define RevertToFollowKeyboard := 3}
+ {$ELSE}
+ RevertToFollowKeyboard = 3;
+ {$ENDIF}
+{$ENDIF}
+
+const
+ DvAccelNum = Cardinal(1) shl 0;
+ DvAccelDenom = Cardinal(1) shl 1;
+ DvThreshold = Cardinal(1) shl 2;
+
+const
+ DvKeyClickPercent = Cardinal(1) shl 0;
+ DvPercent = Cardinal(1) shl 1;
+ DvPitch = Cardinal(1) shl 2;
+ DvDuration = Cardinal(1) shl 3;
+ DvLed = Cardinal(1) shl 4;
+ DvLedMode = Cardinal(1) shl 5;
+ DvKey = Cardinal(1) shl 6;
+ DvAutoRepeatMode = Cardinal(1) shl 7;
+
+const
+ DvString = Cardinal(1) shl 0;
+
+const
+ DvInteger = Cardinal(1) shl 0;
+
+const
+ DeviceMode = Cardinal(1) shl 0;
+ Relative = 0;
+ Absolute = 1;
+{ Merged from Metrolink tree for XINPUT stuff }
+ TS_Raw = 57;
+ TS_Scaled = 58;
+ SendCoreEvents = 59;
+ DontSendCoreEvents = 60;
+{ End of merged section }
+
+const
+ ProximityState = Cardinal(1) shl 1;
+ InProximity = Cardinal(0) shl 1;
+ OutOfProximity = Cardinal(1) shl 1;
+
+const
+ AddToList = 0;
+ DeleteFromList = 1;
+
+const
+ KeyClass = 0;
+ ButtonClass = 1;
+ ValuatorClass = 2;
+ FeedbackClass = 3;
+ ProximityClass = 4;
+ FocusClass = 5;
+ OtherClass = 6;
+
+const
+ KbdFeedbackClass = 0;
+ PtrFeedbackClass = 1;
+ StringFeedbackClass = 2;
+ IntegerFeedbackClass = 3;
+ LedFeedbackClass = 4;
+ BellFeedbackClass = 5;
+
+const
+ _devicePointerMotionHint = 0;
+ _deviceButton1Motion = 1;
+ _deviceButton2Motion = 2;
+ _deviceButton3Motion = 3;
+ _deviceButton4Motion = 4;
+ _deviceButton5Motion = 5;
+ _deviceButtonMotion = 6;
+ _deviceButtonGrab = 7;
+ _deviceOwnerGrabButton = 8;
+ _noExtensionEvent = 9;
+
+const
+ XI_BadDevice = 0;
+ XI_BadEvent = 1;
+ XI_BadMode = 2;
+ XI_DeviceBusy = 3;
+ XI_BadClass = 4;
+
+{ Make XEventClass be a CARD32 for 64 bit servers. Don't affect client
+ definition of XEventClass since that would be a library interface change.
+ See the top of X.h for more _XSERVER64 magic.
+}
+type
+{$ifdef _XSERVER64}
+ XEventClass = CARD32;
+{$ELSE}
+ XEventClass = Longword;
+{$ENDIF}
+
+(*******************************************************************
+ *
+ * Extension version structure.
+ *
+ *)
+
+type
+ PXExtensionVersion = ^TXExtensionVersion;
+ TXExtensionVersion = record
+ present : Smallint;
+ major_version : Smallint;
+ minor_version : Smallint;
+ end;
+
+implementation
+
+end.
diff --git a/packages/x11/src/xinerama.pp b/packages/x11/src/xinerama.pp
new file mode 100644
index 0000000000..36b21f0b2c
--- /dev/null
+++ b/packages/x11/src/xinerama.pp
@@ -0,0 +1,28 @@
+unit xinerama;
+interface
+uses
+ ctypes, xlib;
+{ Converted from X11/Xinerama.h }
+
+{$PACKRECORDS C}
+
+
+type
+
+ PXineramaScreenInfo = ^TXineramaScreenInfo;
+ TXineramaScreenInfo = record
+ screen_number : cint;
+ x_org : cshort;
+ y_org : cshort;
+ width : cshort;
+ height : cshort;
+ end;
+
+function XineramaQueryExtension(dpy:PDisplay; event_base:Pcint; error_base:Pcint):TBool;cdecl;external 'Xinerama';
+function XineramaQueryVersion(dpy:PDisplay; major:Pcint; minor:Pcint):TStatus;cdecl;external 'Xinerama';
+function XineramaIsActive(dpy:PDisplay):TBool;cdecl;external 'Xinerama';
+function XineramaQueryScreens(dpy:PDisplay; number:Pcint):PXineramaScreenInfo;cdecl;external 'Xinerama';
+
+implementation
+
+end.
diff --git a/packages/x11/src/xkb.pp b/packages/x11/src/xkb.pp
new file mode 100644
index 0000000000..f59ed2fbd8
--- /dev/null
+++ b/packages/x11/src/xkb.pp
@@ -0,0 +1,2855 @@
+{
+ $Xorg: XKB.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
+************************************************************
+ $Xorg: XKBstr.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
+************************************************************
+ $Xorg: XKBgeom.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $
+************************************************************
+
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************
+ $XFree86: xc/include/extensions/XKB.h,v 1.5 2002/11/20 04:49:01 dawes Exp $
+ $XFree86: xc/include/extensions/XKBgeom.h,v 3.9 2002/09/18 17:11:40 tsi Exp $
+
+ Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
+
+Thanks:
+ I want to thanks to oliebol for putting up with all of the problems that was found
+ while translating this code. ;)
+
+ I want to thanks #fpc channel in freenode irc, for helping me, and to put up with my
+ wierd questions ;)
+
+ Thanks for mmc in #xlib on freenode irc And so for the channel itself for the helping me to
+ understanding some of the problems I had converting this headers and pointing me to resources
+ that helped translating this headers.
+
+ Ido
+
+History:
+ 2004/10/15 - Fixed a bug of accessing second based records by removing "paced record" and
+ chnaged it to "reocrd" only.
+ 2004/10/04 - 06 - Convertion from the c header of XKBgeom.h.
+ 2004/10/03 - Removed the XKBstr_UNIT compiler decleration. Afther the joined files,
+ There is no need for it anymore.
+ - There is a need to define (for now) XKBgeom (compiler define) in order
+ to use the code of it. At this moment, I did not yet converted it to Pascal.
+
+ 2004/09/17 - 10/04 - Convertion from the c header of XKBstr.
+
+ 2004/10/03 - Joined xkbstr.pas into xkb.pas because of the circular calls problems.
+ - Added the history of xkbstr.pas above this addition.
+
+ 2004/09/17 - Fixed a wrong convertion number of XkbPerKeyBitArraySize, insted
+ of float, it's now converted into integer (as it should have been).
+
+ 2004/09/15 - 16 - Convertion from the c header of XKB.h.
+}
+{$PACKRECORDS C}
+{$MODE OBJFPC} {$MACRO ON} {$DEFINE MACRO}
+
+unit XKB;
+interface
+uses X, Xlib;
+
+function XkbCharToInt (v : Byte) : SmallInt;
+procedure XkbIntTo2Chars (i : Word; var h, l : byte);
+
+function Xkb2CharsToInt (h, l : Byte) : SmallInt;
+
+ {
+ Common data structures and access macros
+ }
+type
+ PXkbStatePtr = ^TXkbStateRec;
+ TXkbStateRec = record
+ group : Byte;
+ locked_group : Byte;
+ base_group : Word;
+ latched_group : Word;
+ mods : Byte;
+ base_mods : Byte;
+ latched_mods : Byte;
+ locked_mods : Byte;
+ compat_state : Byte;
+ grab_mods : Byte;
+ compat_grab_mods : Byte;
+ lookup_mods : Byte;
+ compat_lookup_mods : Byte;
+ ptr_buttons : Word;
+ end;
+
+function XkbModLocks (s : PXkbStatePtr) : Byte;
+function XkbStateMods (s : PXkbStatePtr) : Word;
+function XkbGroupLock (s : PXkbStatePtr) : Byte;
+function XkbStateGroup (s : PXkbStatePtr) : Word;
+function XkbStateFieldFromRec (s : PXkbStatePtr) : Cardinal;
+function XkbGrabStateFromRec (s : PXkbStatePtr) : Cardinal;
+
+type
+ PXkbModsPtr = ^TXkbModsRec;
+ TXkbModsRec = record
+ mask : Byte; // effective mods
+ real_mods : Byte;
+ vmods : Word;
+ end;
+
+type
+ PXkbKTMapEntryPtr = ^TXkbKTMapEntryRec;
+ TXkbKTMapEntryRec = record
+ active : Boolean;
+ level : Byte;
+ mods : TXkbModsRec;
+ end;
+
+type
+ PXkbKeyTypePtr = ^TXkbKeyTypeRec;
+ TXkbKeyTypeRec = record
+ mods : TXkbModsRec;
+ num_levels : Byte;
+ map_count : Byte;
+ map : PXkbKTMapEntryPtr;
+ preserve : PXkbModsPtr;
+ name : TAtom;
+ level_names : TAtom;
+ end;
+
+function XkbNumGroups (g : Word) : Word;
+function XkbOutOfRangeGroupInfo (g : Word) : Word;
+function XkbOutOfRangeGroupAction (g : Word) : Word;
+function XkbOutOfRangeGroupNumber (g : Word) : Word;
+function XkbSetGroupInfo (g, w, n : Word) : Word;
+function XkbSetNumGroups (g, n : Word) : Word;
+
+ {
+ Structures and access macros used primarily by the server
+ }
+
+type
+ PXkbBehavior = ^TXkbBehavior;
+ TXkbBehavior = record
+ _type : Byte;
+ data : Byte;
+ end;
+
+
+type
+ PXkbModAction = ^TXkbModAction;
+ TXkbModAction = record
+ _type : Byte;
+ flags : Byte;
+ mask : Byte;
+ real_mods : Byte;
+ vmods1 : Byte;
+ vmods2 : Byte;
+ end;
+
+function XkbModActionVMods (a : PXkbModAction) : SmallInt;
+procedure XkbSetModActionVMods (a : PXkbModAction; v : Byte);
+
+type
+ PXkbGroupAction = ^TXkbGroupAction;
+ TXkbGroupAction = record
+ _type : Byte;
+ flags : Byte;
+ group_XXX : ShortInt;
+ end;
+
+function XkbSAGroup (a : PXkbGroupAction) : ShortInt;
+procedure XkbSASetGroup (a : PXkbGroupAction; g : ShortInt);
+
+type
+ PXkbISOAction = ^TXkbISOAction;
+ TXkbISOAction = record
+ _type : Byte;
+ flags : Byte;
+ mask : Byte;
+ real_mods : Byte;
+ group_XXX : ShortInt;
+ affect : Byte;
+ vmods1 : Byte;
+ vmods2 : Byte;
+ end;
+
+type
+ PXkbPtrAction = ^TXkbPtrAction;
+ TXkbPtrAction = record
+ _type : Byte;
+ flags : Byte;
+ high_XXX : Byte;
+ low_XXX : Byte;
+ high_YYY : Byte;
+ low_YYY : Byte;
+ end;
+
+function XkbPtrActionX (a : PXkbPtrAction) : Word;
+function XkbPtrActionY (a : PXkbPtrAction) : Word;
+procedure XkbSetPtrActionX (a : PXkbPtrAction; x : Byte);
+procedure XkbSetPtrActionY (a : PXkbPtrAction; y : Byte);
+
+type
+ PXkbPtrBtnAction = ^TXkbPtrBtnAction;
+ TXkbPtrBtnAction = record
+ _type : Byte;
+ flags : Byte;
+ count : Byte;
+ button : Byte;
+ end;
+
+type
+ PXkbPtrDfltAction = ^TXkbPtrDfltAction;
+ TXkbPtrDfltAction = record
+ _type : Byte;
+ flags : Byte;
+ affect : Byte;
+ valueXXX : ShortInt;
+ end;
+
+function XkbSAPtrDfltValue (a : PXkbPtrDfltAction) : ShortInt;
+procedure XkbSASetPtrDfltValue (a : PXkbPtrDfltAction; const c);
+
+type
+ PXkbSwitchScreenAction = ^TXkbSwitchScreenAction;
+ TXkbSwitchScreenAction = record
+ _type : Byte;
+ flags : Byte;
+ screenXXX : ShortInt;
+ end;
+
+function XkbSAScreen (a : PXkbSwitchScreenAction) : ShortInt;
+procedure XkbSASetScreen (a : PXkbSwitchScreenAction; const s);
+
+type
+ PXkbCtrlsAction = ^TXkbCtrlsAction;
+ TXkbCtrlsAction = record
+ _type : Byte;
+ flags : Byte;
+ ctrls3 : Byte;
+ ctrls2 : Byte;
+ ctrls1 : Byte;
+ ctrls0 : Byte;
+ end;
+
+procedure XkbActionSetCtrls (a : PXkbCtrlsAction; c : Byte);
+function XkbActionCtrls (a : PXkbCtrlsAction) : Word;
+
+type
+ PXkbMessageAction = ^TXkbMessageAction;
+ TXkbMessageAction = record
+ _type : Byte;
+ flags : Byte;
+ message : array [0..5] of char;
+ end;
+
+type
+ PXkbRedirectKeyAction = ^TXkbRedirectKeyAction;
+ TXkbRedirectKeyAction = record
+ _type : Byte;
+ new_key : Byte;
+ mods_mask : Byte;
+ mods : Byte;
+ vmods_mask0 : Byte;
+ vmods_mask1 : Byte;
+ vmods0 : Byte;
+ vmods1 : Byte;
+ end;
+
+function XkbSARedirectVMods (a : PXkbRedirectKeyAction) : Word;
+procedure XkbSARedirectSetVMods (a : PXkbRedirectKeyAction; m : Byte);
+function XkbSARedirectVModsMask (a : PXkbRedirectKeyAction) : Word;
+procedure XkbSARedirectSetVModsMask (a : PXkbRedirectKeyAction; m : Byte);
+
+type
+ PXkbDeviceBtnAction = ^TXkbDeviceBtnAction;
+ TXkbDeviceBtnAction = record
+ _type : Byte;
+ flags : Byte;
+ count : Byte;
+ button : Byte;
+ device : Byte;
+ end;
+
+type
+ PXkbDeviceValuatorAction = ^TXkbDeviceValuatorAction;
+ TXkbDeviceValuatorAction = record
+ _type : Byte;
+ device : Byte;
+ v1_what : Byte;
+ v1_ndx : Byte;
+ v1_value : Byte;
+ v2_what : Byte;
+ v2_ndx : Byte;
+ v2_value : Byte;
+ end;
+
+ {
+ Macros to classify key actions
+ }
+const
+ XkbAnyActionDataSize = 7;
+
+type
+ PXkbAnyAction = ^TXkbAnyAction;
+ TXkbAnyAction = record
+ _type : byte;
+ data : array [0..XkbAnyActionDataSize-1] of byte;
+ end;
+
+function XkbIsModAction (a : PXkbAnyAction) : LongBool;
+function XkbIsGroupAction (a : PXkbAnyAction) : LongBool;
+function XkbIsPtrAction (a : PXkbAnyAction) : LongBool;
+
+type
+ PXkbAction = ^TXkbAction;
+ TXkbAction = record
+ any : TXkbAnyAction;
+ mods : TXkbModAction;
+ group : TXkbGroupAction;
+ iso : TXkbISOAction;
+ ptr : TXkbPtrAction;
+ btn : TXkbPtrBtnAction;
+ dflt : TXkbPtrDfltAction;
+ screen : TXkbSwitchScreenAction;
+ ctrls : TXkbCtrlsAction;
+ msg : TXkbMessageAction;
+ redirect : TXkbRedirectKeyAction;
+ devbtn : TXkbDeviceBtnAction;
+ devval : TXkbDeviceValuatorAction;
+ _type : Byte;
+ end;
+
+ {
+ XKB request codes, used in:
+ - xkbReqType field of all requests
+ - requestMinor field of some events
+ }
+const
+ X_kbUseExtension = 0;
+ X_kbSelectEvents = 1;
+ X_kbBell = 3;
+ X_kbGetState = 4;
+ X_kbLatchLockState = 5;
+ X_kbGetControls = 6;
+ X_kbSetControls = 7;
+ X_kbGetMap = 8;
+ X_kbSetMap = 9;
+ X_kbGetCompatMap = 10;
+ X_kbSetCompatMap = 11;
+ X_kbGetIndicatorState = 12;
+ X_kbGetIndicatorMap = 13;
+ X_kbSetIndicatorMap = 14;
+ X_kbGetNamedIndicator = 15;
+ X_kbSetNamedIndicator = 16;
+ X_kbGetNames = 17;
+ X_kbSetNames = 18;
+ X_kbGetGeometry = 19;
+ X_kbSetGeometry = 20;
+ X_kbPerClientFlags = 21;
+ X_kbListComponents = 22;
+ X_kbGetKbdByName = 23;
+ X_kbGetDeviceInfo = 24;
+ X_kbSetDeviceInfo = 25;
+ X_kbSetDebuggingFlags = 101;
+
+ {
+ In the X sense, XKB reports only one event.
+ The type field of all XKB events is XkbEventCode
+ }
+const
+ XkbEventCode = 0;
+ XkbNumberEvents = XkbEventCode +1;
+
+ {
+ XKB has a minor event code so it can use one X event code for
+ multiple purposes.
+ - reported in the xkbType field of all XKB events.
+ - XkbSelectEventDetails: Indicates the event for which event details
+ are being changed
+ }
+const
+ XkbNewKeyboardNotify = 0;
+ XkbMapNotify = 1;
+ XkbStateNotify = 2;
+ XkbControlsNotify = 3;
+ XkbIndicatorStateNotify = 4;
+ XkbIndicatorMapNotify = 5;
+ XkbNamesNotify = 6;
+ XkbCompatMapNotify = 7;
+ XkbBellNotify = 8;
+ XkbActionMessage = 9;
+ XkbAccessXNotify = 10;
+ XkbExtensionDeviceNotify = 11;
+
+ {
+ Event Mask:
+ - XkbSelectEvents: Specifies event interest.
+ }
+const
+ XkbNewKeyboardNotifyMask = Cardinal(1) shl 0;
+ XkbMapNotifyMask = Cardinal(1) shl 1;
+ XkbStateNotifyMask = Cardinal(1) shl 2;
+ XkbControlsNotifyMask = Cardinal(1) shl 3;
+ XkbIndicatorStateNotifyMask = Cardinal(1) shl 4;
+ XkbIndicatorMapNotifyMask = Cardinal(1) shl 5;
+ XkbNamesNotifyMask = Cardinal(1) shl 6;
+ XkbCompatMapNotifyMask = Cardinal(1) shl 7;
+ XkbBellNotifyMask = Cardinal(1) shl 8;
+ XkbActionMessageMask = Cardinal(1) shl 9;
+ XkbAccessXNotifyMask = Cardinal(1) shl 10;
+ XkbExtensionDeviceNotifyMask = Cardinal(1) shl 11;
+ XkbAllEventsMask = $FFF;
+
+ {
+ NewKeyboardNotify event details:
+ }
+const
+ XkbNKN_KeycodesMask = Cardinal(1) shl 0;
+ XkbNKN_GeometryMask = Cardinal(1) shl 1;
+ XkbNKN_DeviceIDMask = Cardinal(1) shl 2;
+ XkbAllNewKeyboardEventsMask = $7;
+
+ {
+ AccessXNotify event types:
+ - The 'what' field of AccessXNotify events reports the
+ reason that the event was generated.
+ }
+const
+ XkbAXN_SKPress = 0;
+ XkbAXN_SKAccept = 1;
+ XkbAXN_SKReject = 2;
+ XkbAXN_SKRelease = 3;
+ XkbAXN_BKAccept = 4;
+ XkbAXN_BKReject = 5;
+ XkbAXN_AXKWarning = 6;
+
+ {
+ AccessXNotify details:
+ - Used as an event detail mask to limit the conditions under which
+ AccessXNotify events are reported
+ }
+const
+ XkbAXN_SKPressMask = Cardinal(1) shl 0;
+ XkbAXN_SKAcceptMask = Cardinal(1) shl 1;
+ XkbAXN_SKRejectMask = Cardinal(1) shl 2;
+ XkbAXN_SKReleaseMask = Cardinal(1) shl 3;
+ XkbAXN_BKAcceptMask = Cardinal(1) shl 4;
+ XkbAXN_BKRejectMask = Cardinal(1) shl 5;
+ XkbAXN_AXKWarningMask = Cardinal(1) shl 6;
+ XkbAllAccessXEventsMask = $f;
+ {
+ State detail mask:
+ - The 'changed' field of StateNotify events reports which of
+ the keyboard state components have changed.
+ - Used as an event detail mask to limit the conditions under
+ which StateNotify events are reported.
+ }
+const
+ XkbModifierStateMask = Cardinal(1) shl 0;
+ XkbModifierBaseMask = Cardinal(1) shl 1;
+ XkbModifierLatchMask = Cardinal(1) shl 2;
+ XkbModifierLockMask = Cardinal(1) shl 3;
+ XkbGroupStateMask = Cardinal(1) shl 4;
+ XkbGroupBaseMask = Cardinal(1) shl 5;
+ XkbGroupLatchMask = Cardinal(1) shl 6;
+ XkbGroupLockMask = Cardinal(1) shl 7;
+ XkbCompatStateMask = Cardinal(1) shl 8;
+ XkbGrabModsMask = Cardinal(1) shl 9;
+ XkbCompatGrabModsMask = Cardinal(1) shl 10;
+ XkbLookupModsMask = Cardinal(1) shl 11;
+ XkbCompatLookupModsMask = Cardinal(1) shl 12;
+ XkbPointerButtonMask = Cardinal(1) shl 13;
+ XkbAllStateComponentsMask = $3fff;
+
+ {
+ Controls detail masks:
+ The controls specified in XkbAllControlsMask:
+ - The 'changed' field of ControlsNotify events reports which of
+ the keyboard controls have changed.
+ - The 'changeControls' field of the SetControls request specifies
+ the controls for which values are to be changed.
+ - Used as an event detail mask to limit the conditions under
+ which ControlsNotify events are reported.
+
+ The controls specified in the XkbAllBooleanCtrlsMask:
+ - The 'enabledControls' field of ControlsNotify events reports the
+ current status of the boolean controls.
+ - The 'enabledControlsChanges' field of ControlsNotify events reports
+ any boolean controls that have been turned on or off.
+ - The 'affectEnabledControls' and 'enabledControls' fields of the
+ kbSetControls request change the set of enabled controls.
+ - The 'accessXTimeoutMask' and 'accessXTimeoutValues' fields of
+ an XkbControlsRec specify the controls to be changed if the keyboard
+ times out and the values to which they should be changed.
+ - The 'autoCtrls' and 'autoCtrlsValues' fields of the PerClientFlags
+ request specifies the specify the controls to be reset when the
+ client exits and the values to which they should be reset.
+ - The 'ctrls' field of an indicator map specifies the controls
+ that drive the indicator.
+ - Specifies the boolean controls affected by the SetControls and
+ LockControls key actions.
+ }
+const
+ XkbRepeatKeysMask = Cardinal(1) shl 0;
+ XkbSlowKeysMask = Cardinal(1) shl 1;
+ XkbBounceKeysMask = Cardinal(1) shl 2;
+ XkbStickyKeysMask = Cardinal(1) shl 3;
+ XkbMouseKeysMask = Cardinal(1) shl 4;
+ XkbMouseKeysAccelMask = Cardinal(1) shl 5;
+ XkbAccessXKeysMask = Cardinal(1) shl 6;
+ XkbAccessXTimeoutMask = Cardinal(1) shl 7;
+ XkbAccessXFeedbackMask = Cardinal(1) shl 8;
+ XkbAudibleBellMask = Cardinal(1) shl 9;
+ XkbOverlay1Mask = Cardinal(1) shl 10;
+ XkbOverlay2Mask = Cardinal(1) shl 11;
+ XkbIgnoreGroupLockMask = Cardinal(1) shl 12;
+ XkbGroupsWrapMask = Cardinal(1) shl 27;
+ XkbInternalModsMask = Cardinal(1) shl 28;
+ XkbIgnoreLockModsMask = Cardinal(1) shl 29;
+ XkbPerKeyRepeatMask = Cardinal(1) shl 30;
+ XkbControlsEnabledMask = Cardinal(1) shl 31;
+
+ XkbAccessXOptionsMask = XkbStickyKeysMask or XkbAccessXFeedbackMask;
+
+ XkbAllBooleanCtrlsMask = $00001FFF;
+ XkbAllControlsMask = $F8001FFF;
+
+ {
+ Compatibility Map Compontents:
+ - Specifies the components to be allocated in XkbAllocCompatMap.
+ }
+const
+ XkbSymInterpMask = 1 shl 0;
+ XkbGroupCompatMask = 1 shl 1;
+ XkbAllCompatMask = $3;
+
+ {
+ Assorted constants and limits.
+ }
+const
+ XkbAllIndicatorsMask = $ffffffff;
+
+ {
+ Map components masks:
+ Those in AllMapComponentsMask:
+ - Specifies the individual fields to be loaded or changed for the
+ GetMap and SetMap requests.
+ Those in ClientInfoMask:
+ - Specifies the components to be allocated by XkbAllocClientMap.
+ Those in ServerInfoMask:
+ - Specifies the components to be allocated by XkbAllocServerMap.
+ }
+const
+ XkbKeyTypesMask = 1 shl 0;
+ XkbKeySymsMask = 1 shl 1;
+ XkbModifierMapMask = 1 shl 2;
+ XkbExplicitComponentsMask = 1 shl 3;
+ XkbKeyActionsMask = 1 shl 4;
+ XkbKeyBehaviorsMask = 1 shl 5;
+ XkbVirtualModsMask = 1 shl 6;
+ XkbVirtualModMapMask = 1 shl 7;
+
+ XkbAllClientInfoMask = XkbKeyTypesMask or XkbKeySymsMask or XkbModifierMapMask;
+ XkbAllServerInfoMask = XkbExplicitComponentsMask or XkbKeyActionsMask or XkbKeyBehaviorsMask or
+ XkbVirtualModsMask or XkbVirtualModMapMask;
+ XkbAllMapComponentsMask = XkbAllClientInfoMask or XkbAllServerInfoMask;
+
+ {
+ Names component mask:
+ - Specifies the names to be loaded or changed for the GetNames and
+ SetNames requests.
+ - Specifies the names that have changed in a NamesNotify event.
+ - Specifies the names components to be allocated by XkbAllocNames.
+ }
+const
+ XkbKeycodesNameMask = 1 shl 0;
+ XkbGeometryNameMask = 1 shl 1;
+ XkbSymbolsNameMask = 1 shl 2;
+ XkbPhysSymbolsNameMask = 1 shl 3;
+ XkbTypesNameMask = 1 shl 4;
+ XkbCompatNameMask = 1 shl 5;
+ XkbKeyTypeNamesMask = 1 shl 6;
+ XkbKTLevelNamesMask = 1 shl 7;
+ XkbIndicatorNamesMask = 1 shl 8;
+ XkbKeyNamesMask = 1 shl 9;
+ XkbKeyAliasesMask = 1 shl 10;
+ XkbVirtualModNamesMask = 1 shl 11;
+ XkbGroupNamesMask = 1 shl 12;
+ XkbRGNamesMask = 1 shl 13;
+ XkbComponentNamesMask = $3f;
+ XkbAllNamesMask = $3fff;
+
+ {
+ Miscellaneous event details:
+ - event detail masks for assorted events that don't reall
+ have any details.
+ }
+const
+ XkbAllStateEventsMask = XkbAllStateComponentsMask;
+ XkbAllMapEventsMask = XkbAllMapComponentsMask;
+ XkbAllControlEventsMask = XkbAllControlsMask;
+ XkbAllIndicatorEventsMask = XkbAllIndicatorsMask;
+ XkbAllNameEventsMask = XkbAllNamesMask;
+ XkbAllCompatMapEventsMask = XkbAllCompatMask;
+ XkbAllBellEventsMask = Cardinal(1) shl 0;
+ XkbAllActionMessagesMask = Cardinal(1) shl 0;
+
+ {
+ XKB reports one error: BadKeyboard
+ A further reason for the error is encoded into to most significant
+ byte of the resourceID for the error:
+ XkbErr_BadDevice - the device in question was not found
+ XkbErr_BadClass - the device was found but it doesn't belong to
+ the appropriate class.
+ XkbErr_BadId - the device was found and belongs to the right
+ class, but not feedback with a matching id was
+ found.
+ The low byte of the resourceID for this error contains the device
+ id, class specifier or feedback id that failed.
+ }
+const
+ XkbKeyboard = 0;
+ XkbNumberErrors = 1;
+ XkbErr_BadDevice = $ff;
+ XkbErr_BadClass = $fe;
+ XkbErr_BadId = $fd;
+
+ {
+ Keyboard Components Mask:
+ - Specifies the components that follow a GetKeyboardByNameReply
+ }
+const
+ XkbClientMapMask = Cardinal(1) shl 0;
+ XkbServerMapMask = Cardinal(1) shl 1;
+ XkbCompatMapMask = Cardinal(1) shl 2;
+ XkbIndicatorMapMask = Cardinal(1) shl 3;
+ XkbNamesMask = Cardinal(1) shl 4;
+ XkbGeometryMask = Cardinal(1) shl 5;
+ XkbControlsMask = Cardinal(1) shl 6;
+ XkbAllComponentsMask = $7f;
+
+
+ {
+ AccessX Options Mask
+ - The 'accessXOptions' field of an XkbControlsRec specifies the
+ AccessX options that are currently in effect.
+ - The 'accessXTimeoutOptionsMask' and 'accessXTimeoutOptionsValues'
+ fields of an XkbControlsRec specify the Access X options to be
+ changed if the keyboard times out and the values to which they
+ should be changed.
+ }
+const
+ XkbAX_SKPressFBMask = Cardinal(1) shl 0;
+ XkbAX_SKAcceptFBMask = Cardinal(1) shl 1;
+ XkbAX_FeatureFBMask = Cardinal(1) shl 2;
+ XkbAX_SlowWarnFBMask = Cardinal(1) shl 3;
+ XkbAX_IndicatorFBMask = Cardinal(1) shl 4;
+ XkbAX_StickyKeysFBMask = Cardinal(1) shl 5;
+ XkbAX_TwoKeysMask = Cardinal(1) shl 6;
+ XkbAX_LatchToLockMask = Cardinal(1) shl 7;
+ XkbAX_SKReleaseFBMask = Cardinal(1) shl 8;
+ XkbAX_SKRejectFBMask = Cardinal(1) shl 9;
+ XkbAX_BKRejectFBMask = Cardinal(1) shl 10;
+ XkbAX_DumbBellFBMask = Cardinal(1) shl 11;
+ XkbAX_FBOptionsMask = $F3F;
+ XkbAX_SKOptionsMask = $0C0;
+ XkbAX_AllOptionsMask = $FFF;
+
+ {
+ XkbUseCoreKbd is used to specify the core keyboard without having
+ to look up its X input extension identifier.
+ XkbUseCorePtr is used to specify the core pointer without having
+ to look up its X input extension identifier.
+ XkbDfltXIClass is used to specify "don't care" any place that the
+ XKB protocol is looking for an X Input Extension
+ device class.
+ XkbDfltXIId is used to specify "don't care" any place that the
+ XKB protocol is looking for an X Input Extension
+ feedback identifier.
+ XkbAllXIClasses is used to get information about all device indicators,
+ whether they're part of the indicator feedback class
+ or the keyboard feedback class.
+ XkbAllXIIds is used to get information about all device indicator
+ feedbacks without having to list them.
+ XkbXINone is used to indicate that no class or id has been specified.
+ XkbLegalXILedClass(c) True if 'c' specifies a legal class with LEDs
+ XkbLegalXIBellClass(c) True if 'c' specifies a legal class with bells
+ XkbExplicitXIDevice(d) True if 'd' explicitly specifies a device
+ XkbExplicitXIClass(c) True if 'c' explicitly specifies a device class
+ XkbExplicitXIId(c) True if 'i' explicitly specifies a device id
+ XkbSingleXIClass(c) True if 'c' specifies exactly one device class,
+ including the default.
+ XkbSingleXIId(i) True if 'i' specifies exactly one device
+ identifier, including the default.
+ }
+const
+ XkbUseCoreKbd = $0100;
+ XkbUseCorePtr = $0200;
+ XkbDfltXIClass = $0300;
+ XkbDfltXIId = $0400;
+ XkbAllXIClasses = $0500;
+ XkbAllXIIds = $0600;
+ XkbXINone = $ff00;
+
+function XkbLegalXILedClass (c : Cardinal) : LongBool;
+function XkbLegalXIBellClass (c : Cardinal) : LongBool;
+function XkbExplicitXIDevice (c : Cardinal) : LongBool;
+function XkbExplicitXIClass (c : Cardinal) : LongBool;
+function XkbExplicitXIId (c : Cardinal) : LongBool;
+function XkbSingleXIClass (c : Cardinal) : LongBool;
+function XkbSingleXIId (c : Cardinal) : LongBool;
+
+const
+ XkbNoModifier = $ff;
+ XkbNoShiftLevel = $ff;
+ XkbNoShape = $ff;
+ XkbNoIndicator = $ff;
+
+ XkbNoModifierMask = 0;
+ XkbAllModifiersMask = $ff;
+ XkbAllVirtualModsMask = $ffff;
+
+ XkbNumKbdGroups = 4;
+ XkbMaxKbdGroup = XkbNumKbdGroups-1;
+
+ XkbMaxMouseKeysBtn = 4;
+
+ {
+ Group Index and Mask:
+ - Indices into the kt_index array of a key type.
+ - Mask specifies types to be changed for XkbChangeTypesOfKey
+ }
+const
+ XkbGroup1Index = 0;
+ XkbGroup2Index = 1;
+ XkbGroup3Index = 2;
+ XkbGroup4Index = 3;
+ XkbAnyGroup = 254;
+ XkbAllGroups = 255;
+
+ XkbGroup1Mask = 1 shl 0;
+ XkbGroup2Mask = 1 shl 1;
+ XkbGroup3Mask = 1 shl 2;
+ XkbGroup4Mask = 1 shl 3;
+ XkbAnyGroupMask = 1 shl 7;
+ XkbAllGroupsMask = $f;
+
+ {
+ BuildCoreState: Given a keyboard group and a modifier state,
+ construct the value to be reported an event.
+ GroupForCoreState: Given the state reported in an event,
+ determine the keyboard group.
+ IsLegalGroup: Returns TRUE if 'g' is a valid group index.
+ }
+function XkbBuildCoreState (m, g : Cardinal) : Cardinal;
+function XkbGroupForCoreState (s : Cardinal) : Cardinal;
+function XkbIsLegalGroup (g : Cardinal) : LongBool;
+
+ {
+ GroupsWrap values:
+ - The 'groupsWrap' field of an XkbControlsRec specifies the
+ treatment of out of range groups.
+ - Bits 6 and 7 of the group info field of a key symbol map
+ specify the interpretation of out of range groups for the
+ corresponding key.
+ }
+const
+ XkbWrapIntoRange = $00;
+ XkbClampIntoRange = $40;
+ XkbRedirectIntoRange = $80;
+
+ {
+ Action flags: Reported in the 'flags' field of most key actions.
+ Interpretation depends on the type of the action; not all actions
+ accept all flags.
+
+ Option Used for Actions
+ ------ ----------------
+ ClearLocks SetMods, LatchMods, SetGroup, LatchGroup
+ LatchToLock SetMods, LatchMods, SetGroup, LatchGroup
+ LockNoLock LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
+ LockNoUnlock LockMods, ISOLock, LockPtrBtn, LockDeviceBtn
+ UseModMapMods SetMods, LatchMods, LockMods, ISOLock
+ GroupAbsolute SetGroup, LatchGroup, LockGroup, ISOLock
+ UseDfltButton PtrBtn, LockPtrBtn
+ NoAcceleration MovePtr
+ MoveAbsoluteX MovePtr
+ MoveAbsoluteY MovePtr
+ ISODfltIsGroup ISOLock
+ ISONoAffectMods ISOLock
+ ISONoAffectGroup ISOLock
+ ISONoAffectPtr ISOLock
+ ISONoAffectCtrls ISOLock
+ MessageOnPress ActionMessage
+ MessageOnRelease ActionMessage
+ MessageGenKeyEvent ActionMessage
+ AffectDfltBtn SetPtrDflt
+ DfltBtnAbsolute SetPtrDflt
+ SwitchApplication SwitchScreen
+ SwitchAbsolute SwitchScreen
+ }
+const
+ XkbSA_ClearLocks = Cardinal(1) shl 0;
+ XkbSA_LatchToLock = Cardinal(1) shl 1;
+
+ XkbSA_LockNoLock = Cardinal(1) shl 0;
+ XkbSA_LockNoUnlock = Cardinal(1) shl 1;
+
+ XkbSA_UseModMapMods = Cardinal(1) shl 2;
+
+ XkbSA_GroupAbsolute = Cardinal(1) shl 2;
+ XkbSA_UseDfltButton = 0;
+
+ XkbSA_NoAcceleration = Cardinal(1) shl 0;
+ XkbSA_MoveAbsoluteX = Cardinal(1) shl 1;
+ XkbSA_MoveAbsoluteY = Cardinal(1) shl 2;
+
+ XkbSA_ISODfltIsGroup = Cardinal(1) shl 7;
+ XkbSA_ISONoAffectMods = Cardinal(1) shl 6;
+ XkbSA_ISONoAffectGroup = Cardinal(1) shl 5;
+ XkbSA_ISONoAffectPtr = Cardinal(1) shl 4;
+ XkbSA_ISONoAffectCtrls = Cardinal(1) shl 3;
+ XkbSA_ISOAffectMask = $78;
+
+ XkbSA_MessageOnPress = Cardinal(1) shl 0;
+ XkbSA_MessageOnRelease = Cardinal(1) shl 1;
+ XkbSA_MessageGenKeyEvent = Cardinal(1) shl 2;
+
+ XkbSA_AffectDfltBtn = 1;
+ XkbSA_DfltBtnAbsolute = Cardinal(1) shl 2;
+
+ XkbSA_SwitchApplication = Cardinal(1) shl 0;
+ XkbSA_SwitchAbsolute = Cardinal(1) shl 2;
+
+ {
+ The following values apply to the SA_DeviceValuator
+ action only. Valuator operations specify the action
+ to be taken. Values specified in the action are
+ multiplied by 2^scale before they are applied.
+ }
+const
+ XkbSA_IgnoreVal = $00;
+ XkbSA_SetValMin = $10;
+ XkbSA_SetValCenter = $20;
+ XkbSA_SetValMax = $30;
+ XkbSA_SetValRelative = $40;
+ XkbSA_SetValAbsolute = $50;
+ XkbSA_ValOpMask = $70;
+ XkbSA_ValScaleMask = $07;
+
+function XkbSA_ValOp (a : Cardinal) : Cardinal;
+function XkbSA_ValScale (a : Cardinal) : Cardinal;
+
+ {
+ Action types: specifies the type of a key action. Reported in the
+ type field of all key actions.
+ }
+const
+ XkbSA_NoAction = $00;
+ XkbSA_SetMods = $01;
+ XkbSA_LatchMods = $02;
+ XkbSA_LockMods = $03;
+ XkbSA_SetGroup = $04;
+ XkbSA_LatchGroup = $05;
+ XkbSA_LockGroup = $06;
+ XkbSA_MovePtr = $07;
+ XkbSA_PtrBtn = $08;
+ XkbSA_LockPtrBtn = $09;
+ XkbSA_SetPtrDflt = $0a;
+ XkbSA_ISOLock = $0b;
+ XkbSA_Terminate = $0c;
+ XkbSA_SwitchScreen = $0d;
+ XkbSA_SetControls = $0e;
+ XkbSA_LockControls = $0f;
+ XkbSA_ActionMessage = $10;
+ XkbSA_RedirectKey = $11;
+ XkbSA_DeviceBtn = $12;
+ XkbSA_LockDeviceBtn = $13;
+ XkbSA_DeviceValuator = $14;
+ XkbSA_LastAction = XkbSA_DeviceValuator;
+ XkbSA_NumActions = XkbSA_LastAction +1;
+
+{$ifDef XF86DDXACTIONS}
+ {$Define XF86}
+{$ELSE}
+ {$IFDEF XFree86Server}
+ {$DEFINE XF86}
+ {$endif}
+{$ENDIF}
+
+{$IFDEF XF86}
+ XkbSA_XFree86Private = $86;
+{$Endif}
+
+ {
+ Specifies the key actions that clear latched groups or modifiers.
+ }
+const
+{#define XkbSA_BreakLatch \
+ ((1<<XkbSA_NoAction)|(1<<XkbSA_PtrBtn)|(1<<XkbSA_LockPtrBtn)|\
+ (1<<XkbSA_Terminate)|(1<<XkbSA_SwitchScreen)|(1<<XkbSA_SetControls)|\
+ (1<<XkbSA_LockControls)|(1<<XkbSA_ActionMessage)|\
+ (1<<XkbSA_RedirectKey)|(1<<XkbSA_DeviceBtn)|(1<<XkbSA_LockDeviceBtn))
+}
+ XkbSA_BreakLatch = (1 shl XkbSA_PtrBtn) or (1 shl XkbSA_LockPtrBtn) or (1 shl XkbSA_Terminate)
+ or
+ (1 shl XkbSA_SwitchScreen) or (1 shl XkbSA_SetControls) or (1 shl XkbSA_LockControls)
+ or
+ (1 shl XkbSA_ActionMessage) or (1 shl XkbSA_RedirectKey) or (1 shl XkbSA_DeviceBtn)
+ or
+ (1 shl XkbSA_LockDeviceBtn);
+
+ {
+ Key Behavior Qualifier:
+ KB_Permanent indicates that the behavior describes an unalterable
+ characteristic of the keyboard, not an XKB software-simulation of
+ the listed behavior.
+ Key Behavior Types:
+ Specifies the behavior of the underlying key.
+ }
+const
+ XkbKB_Permanent = $80;
+ XkbKB_OpMask = $7f;
+
+ XkbKB_Default = $00;
+ XkbKB_Lock = $01;
+ XkbKB_RadioGroup = $02;
+ XkbKB_Overlay1 = $03;
+ XkbKB_Overlay2 = $04;
+
+ XkbKB_RGAllowNone = $80;
+
+ {
+ Various macros which describe the range of legal keycodes.
+ }
+const
+ XkbMinLegalKeyCode = 8;
+ XkbMaxLegalKeyCode = 255;
+ XkbMaxKeyCount = XkbMaxLegalKeyCode - XkbMinLegalKeyCode +1;
+ XkbPerKeyBitArraySize = (XkbMaxLegalKeyCode + 1) div 8;
+
+function XkbIsLegalKeycode (const k : Cardinal) : LongBool;
+
+type
+ PXkbControlsPtr = ^TXkbControlsRec;
+ TXkbControlsRec = record
+ mk_dflt_btn : Byte;
+ num_groups : Byte;
+ groups_wrap : Byte;
+ internal : TXkbModsRec;
+ ignore_lock : TXkbModsRec;
+ enabled_ctrls : Word;
+ repeat_delay : Word;
+ repeat_interval : Word;
+ slow_keys_delay : Word;
+ debounce_delay : Word;
+ mk_delay : Word;
+ mk_interval : Word;
+ mk_time_to_max : Word;
+ mk_max_speed : Word;
+ mk_curve : SmallInt;
+ ax_options : Word;
+ ax_timeout : Word;
+ axt_opts_mask : Word;
+ axt_opts_values : Word;
+ axt_ctrls_mask : Word;
+ axt_ctrls_values : Word;
+ per_key_repeat : array [0..XkbPerKeyBitArraySize -1] of Byte;
+ end;
+
+function XkbAX_AnyFeedback (c : PXkbControlsPtr) : Word;
+function XkbAX_NeedOption (c : PXkbControlsPtr; w : Word) : Word;
+function XkbAX_NeedFeedback (c : PXkbControlsPtr; w : Word) : Boolean;
+
+ {
+ Assorted constants and limits.
+ }
+const
+ XkbNumModifiers = 8;
+ XkbNumVirtualMods = 16;
+ XkbNumIndicators = 32;
+
+ XkbMaxRadioGroups = 32;
+ XkbAllRadioGroupsMask = $ffffffff;
+ XkbMaxShiftLevel = 63;
+ XkbMaxSymsPerKey = XkbMaxShiftLevel * XkbNumKbdGroups;
+ XkbRGMaxMembers = 12;
+ XkbActionMessageLength = 6;
+ XkbKeyNameLength = 4;
+ XkbMaxRedirectCount = 8;
+
+ XkbGeomPtsPerMM = 10;
+ XkbGeomMaxColors = 32;
+ XkbGeomMaxLabelColors = 3;
+ XkbGeomMaxPriority = 255;
+
+type
+ PXkbServerMapPtr = ^TXkbServerMapRec;
+ TXkbServerMapRec = record
+ num_acts : Word;
+ size_acts : Word;
+ acts : PXkbAction;
+ behaviors : PXkbBehavior;
+ key_acts : PWord;
+ {$IF defined (__cplusplus) or defined (c_plusplus)}
+ //explicit is a C++ reserved word
+ c_explicit : PByte;
+ {$ELSE}
+ explicit : PByte;
+ {$ENDIF}
+ vmods : array [0..XkbNumVirtualMods -1] of Byte;
+ vmodmap : PWord;
+ end;
+
+function XkbSMKeyActionsPtr (m : PXkbServerMapPtr; k : Word) : PXkbAction;
+
+ {
+ Structures and access macros used primarily by clients
+ }
+
+type
+ PXkbSymMapPtr = ^TXkbSymMapRec;
+ TXkbSymMapRec = record
+ kt_index : array [0..XkbNumKbdGroups -1] of Byte;
+ group_info : Byte;
+ width : Byte;
+ offset : Byte;
+ end;
+
+type
+ PXkbClientMapPtr = ^TXkbClientMapRec;
+ TXkbClientMapRec = record
+ size_types : Byte;
+ num_types : Byte;
+ types : PXkbKeyTypePtr;
+
+ size_syms : Word;
+ num_syms : Word;
+ syms : PKeySym;
+ key_sym_map : PXkbSymMapPtr;
+
+ modmap : PByte;
+ end;
+
+function XkbCMKeyGroupInfo (m : PXkbClientMapPtr; k : Word) : Byte;
+function XkbCMKeyNumGroups (m : PXkbClientMapPtr; k : Word) : Byte;
+function XkbCMKeyGroupWidth (m : PXkbClientMapPtr; k : Word; g : Byte) : Byte;
+function XkbCMKeyGroupsWidth (m : PXkbClientMapPtr; k : Word) : Byte;
+function XkbCMKeyTypeIndex (m : PXkbClientMapPtr; k : Word; g : Byte) : Byte;
+function XkbCMKeyType (m : PXkbClientMapPtr; k : Word; g : Byte) : PXkbKeyTypePtr;
+function XkbCMKeyNumSyms (m : PXkbClientMapPtr; k : Word) : Word;
+function XkbCMKeySymsOffset (m : PXkbClientMapPtr; k : Word) : Byte;
+function XkbCMKeySymsPtr (m : PXkbClientMapPtr; k : Word) : PKeySym;
+
+ {
+ Compatibility structures and access macros
+ }
+type
+ PXkbSymInterpretPtr = ^TXkbSymInterpretRec;
+ TXkbSymInterpretRec = record
+ sym : TKeySym;
+ flags : Byte;
+ match : Byte;
+ mods : Byte;
+ virtual_mod : Byte;
+ act : TXkbAnyAction;
+ end;
+
+type
+ PXkbCompatMapPtr = ^TXkbCompatMapRec;
+ TXkbCompatMapRec = record
+ sym_interpret : PXkbSymInterpretPtr;
+ groups : array [0..XkbNumKbdGroups -1] of TXkbModsRec;
+ num_si : Word;
+ size_si : Word;
+ end;
+
+type
+ PXkbIndicatorMapPtr = ^TXkbIndicatorMapRec;
+ TXkbIndicatorMapRec = record
+ flags : Byte;
+ which_groups : Byte;
+ groups : Byte;
+ which_mods : Byte;
+ mods : TXkbModsRec;
+ ctrls : Word;
+ end;
+
+function XkbIM_IsAuto (i : PXkbIndicatorMapPtr) : Boolean;
+function XkbIM_InUse (i : PXkbIndicatorMapPtr) : Boolean;
+
+type
+ PXkbIndicatorPtr = ^TXkbIndicatorRec;
+ TXkbIndicatorRec = record
+ phys_indicators : LongWord;
+ maps : array [0..XkbNumIndicators -1] of TXkbIndicatorMapRec;
+ end;
+
+type
+ PXkbKeyNamePtr = ^TXkbKeyNameRec;
+ TXkbKeyNameRec = record
+ name : array [0..XkbKeyNameLength -1] of Char;
+ end;
+
+type
+ PXkbKeyAliasPtr = ^TXkbKeyAliasRec;
+ TXkbKeyAliasRec = record
+ real : array [0..XkbKeyNameLength -1] of Char;
+ alias : array [0..XkbKeyNameLength -1] of Char;
+ end;
+
+ {
+ Names for everything
+ }
+type
+ PXkbNamesPtr = ^TXkbNamesRec;
+ TXkbNamesRec = record
+ keycodes : TAtom;
+ geometry : TAtom;
+ symbols : TAtom;
+ types : TAtom;
+ compat : TAtom;
+ vmods : Array [0..XkbNumVirtualMods -1] of TAtom;
+ indicators : array [0..XkbNumIndicators -1] of TAtom;
+ groups : array [0..XkbNumKbdGroups -1] of TAtom;
+ keys : PXkbKeyNamePtr;
+ key_aliases : PXkbKeyAliasPtr;
+ radio_groups : PAtom;
+ phys_symbols : TAtom;
+ num_keys : Byte;
+ num_key_aliases : Byte;
+ num_rg : Word;
+ end;
+
+ {
+ Key Type index and mask for the four standard key types.
+ }
+const
+ XkbOneLevelIndex = 0;
+ XkbTwoLevelIndex = 1;
+ XkbAlphabeticIndex = 2;
+ XkbKeypadIndex = 3;
+ XkbLastRequiredType = XkbKeypadIndex;
+ XkbNumRequiredTypes = XkbLastRequiredType + 1;
+ XkbMaxKeyTypes = 255;
+
+ XkbOneLevelMask = 1 shl 0;
+ XkbTwoLevelMask = 1 shl 1;
+ XkbAlphabeticMask = 1 shl 2;
+ XkbKeypadMask = 1 shl 3;
+ XkbAllRequiredTypes = $f;
+
+function XkbShiftLevel (n : Byte) : Byte;
+function XkbShiftLevelMask (n : Byte) : Byte;
+
+ {
+ Extension name and version information
+ }
+{$IFDEF MACRO}
+ {$DEFINE XkbName := 'XKEYBOARD'}
+ {$DEFINE XkbMajorVersion := 1}
+ {$DEFINE XkbMinorVersion := 0}
+{$ELSE}
+const
+ XkbName = 'XKEYBOARD';
+ XkbMajorVersion = 1;
+ XkbMinorVersion = 0;
+{$ENDIF}
+
+ {
+ Explicit map components:
+ - Used in the 'explicit' field of an XkbServerMap. Specifies
+ the keyboard components that should _not_ be updated automatically
+ in response to core protocol keyboard mapping requests.
+ }
+const
+ XkbExplicitKeyTypesMask = $0f;
+ XkbExplicitKeyType1Mask = 1 shl 0;
+ XkbExplicitKeyType2Mask = 1 shl 1;
+ XkbExplicitKeyType3Mask = 1 shl 2;
+ XkbExplicitKeyType4Mask = 1 shl 3;
+ XkbExplicitInterpretMask = 1 shl 4;
+ XkbExplicitAutoRepeatMask = 1 shl 5;
+ XkbExplicitBehaviorMask = 1 shl 6;
+ XkbExplicitVModMapMask = 1 shl 7;
+ XkbAllExplicitMask = $ff;
+
+ {
+ Symbol interpretations flags:
+ - Used in the flags field of a symbol interpretation
+ }
+const
+ XkbSI_AutoRepeat = 1 shl 0;
+ XkbSI_LockingKey = 1 shl 1;
+
+ {
+ Symbol interpretations match specification:
+ - Used in the match field of a symbol interpretation to specify
+ the conditions under which an interpretation is used.
+ }
+const
+ XkbSI_LevelOneOnly = $80;
+ XkbSI_OpMask = $7f;
+ XkbSI_NoneOf = 0;
+ XkbSI_AnyOfOrNone = 1;
+ XkbSI_AnyOf = 2;
+ XkbSI_AllOf = 3;
+ XkbSI_Exactly = 4;
+
+ {
+ Indicator map flags:
+ - Used in the flags field of an indicator map to indicate the
+ conditions under which and indicator can be changed and the
+ effects of changing the indicator.
+ }
+const
+ XkbIM_NoExplicit = Cardinal(1) shl 7;
+ XkbIM_NoAutomatic = Cardinal(1) shl 6;
+ XkbIM_LEDDrivesKB = Cardinal(1) shl 5;
+
+ {
+ Indicator map component specifications:
+ - Used by the 'which_groups' and 'which_mods' fields of an indicator
+ map to specify which keyboard components should be used to drive
+ the indicator.
+ }
+const
+ XkbIM_UseBase = Cardinal(1) shl 0;
+ XkbIM_UseLatched = Cardinal(1) shl 1;
+ XkbIM_UseLocked = Cardinal(1) shl 2;
+ XkbIM_UseEffective = Cardinal(1) shl 3;
+ XkbIM_UseCompat = Cardinal(1) shl 4;
+
+ XkbIM_UseNone = 0;
+ XkbIM_UseAnyGroup = XkbIM_UseBase or XkbIM_UseLatched or XkbIM_UseLocked or XkbIM_UseEffective;
+ XkbIM_UseAnyMods = XkbIM_UseAnyGroup or XkbIM_UseCompat;
+
+ {
+ GetByName components:
+ - Specifies desired or necessary components to GetKbdByName request.
+ - Reports the components that were found in a GetKbdByNameReply
+ }
+const
+ XkbGBN_TypesMask = Cardinal(1) shl 0;
+ XkbGBN_CompatMapMask = Cardinal(1) shl 1;
+ XkbGBN_ClientSymbolsMask = Cardinal(1) shl 2;
+ XkbGBN_ServerSymbolsMask = Cardinal(1) shl 3;
+ XkbGBN_SymbolsMask = XkbGBN_ClientSymbolsMask or XkbGBN_ServerSymbolsMask;
+ XkbGBN_IndicatorMapMask = Cardinal(1) shl 4;
+ XkbGBN_KeyNamesMask = Cardinal(1) shl 5;
+ XkbGBN_GeometryMask = Cardinal(1) shl 6;
+ XkbGBN_OtherNamesMask = Cardinal(1) shl 7;
+ XkbGBN_AllComponentsMask = $ff;
+
+ {
+ ListComponents flags
+ }
+const
+ XkbLC_Hidden = Cardinal(1) shl 0;
+ XkbLC_Default = Cardinal(1) shl 1;
+ XkbLC_Partial = Cardinal(1) shl 2;
+
+ XkbLC_AlphanumericKeys = Cardinal(1) shl 8;
+ XkbLC_ModifierKeys = Cardinal(1) shl 9;
+ XkbLC_KeypadKeys = Cardinal(1) shl 10;
+ XkbLC_FunctionKeys = Cardinal(1) shl 11;
+ XkbLC_AlternateGroup = Cardinal(1) shl 12;
+
+ {
+ X Input Extension Interactions
+ - Specifies the possible interactions between XKB and the X input
+ extension
+ - Used to request (XkbGetDeviceInfo) or change (XKbSetDeviceInfo)
+ XKB information about an extension device.
+ - Reports the list of supported optional features in the reply to
+ XkbGetDeviceInfo or in an XkbExtensionDeviceNotify event.
+ XkbXI_UnsupportedFeature is reported in XkbExtensionDeviceNotify
+ events to indicate an attempt to use an unsupported feature.
+ }
+const
+ XkbXI_KeyboardsMask = Cardinal(1) shl 0;
+ XkbXI_ButtonActionsMask = Cardinal(1) shl 1;
+ XkbXI_IndicatorNamesMask = Cardinal(1) shl 2;
+ XkbXI_IndicatorMapsMask = Cardinal(1) shl 3;
+ XkbXI_IndicatorStateMask = Cardinal(1) shl 4;
+ XkbXI_UnsupportedFeatureMask = Cardinal(1) shl 15;
+ XkbXI_AllFeaturesMask = $001f;
+ XkbXI_AllDeviceFeaturesMask = $001e;
+
+ XkbXI_IndicatorsMask = $001c;
+ XkbAllExtensionDeviceEventsMask = $801f;
+
+ {
+ Per-Client Flags:
+ - Specifies flags to be changed by the PerClientFlags request.
+ }
+const
+ XkbPCF_DetectableAutoRepeatMask = Cardinal(1) shl 0;
+ XkbPCF_GrabsUseXKBStateMask = Cardinal(1) shl 1;
+ XkbPCF_AutoResetControlsMask = Cardinal(1) shl 2;
+ XkbPCF_LookupStateWhenGrabbed = Cardinal(1) shl 3;
+ XkbPCF_SendEventUsesXKBState = Cardinal(1) shl 4;
+ XkbPCF_AllFlagsMask = $1F;
+
+ {
+ Debugging flags and controls
+ }
+const
+ XkbDF_DisableLocks = 1 shl 0;
+
+type
+ PXkbPropertyPtr = ^TXkbPropertyRec;
+ TXkbPropertyRec = record
+ name : PChar;
+ value : PChar;
+ end;
+
+type
+ PXkbColorPtr = ^TXkbColorRec;
+ TXkbColorRec = record
+ pixel : Word;
+ spec : PChar;
+ end;
+
+type
+ PXkbPointPtr = ^TXkbPointRec;
+ TXkbPointRec = record
+ x : SmallInt;
+ y : SmallInt;
+ end;
+
+type
+ PXkbBoundsPtr = ^TXkbBoundsRec;
+ TXkbBoundsRec = record
+ x1 : SmallInt;
+ y1 : SmallInt;
+ x2 : SmallInt;
+ y2 : SmallInt;
+ end;
+
+function XkbBoundsWidth (b : PXkbBoundsPtr) : SmallInt;
+function XkbBoundsHeight (b : PXkbBoundsPtr) : SmallInt;
+
+type
+ PXkbOutlinePtr = ^TXkbOutlineRec;
+ TXkbOutlineRec = record
+ num_points : Word;
+ sz_points : Word;
+ corner_radius : Word;
+ points : PXkbPointPtr;
+ end;
+
+type
+ PXkbShapePtr = ^TXkbShapeRec;
+ TXkbShapeRec = record
+ name : TAtom;
+ num_outlines : Word;
+ sz_outlines : Word;
+ outlines : PXkbOutlinePtr;
+ approx : PXkbOutlinePtr;
+ primary : PXkbOutlinePtr;
+ bounds : TXkbBoundsRec;
+ end;
+
+function XkbOutlineIndex (s : PXkbShapePtr; o : PXkbOutlinePtr) : longint;
+
+type
+ PXkbShapeDoodadPtr = ^TXkbShapeDoodadRec;
+ TXkbShapeDoodadRec = record
+ name : TAtom;
+ _type : Byte;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ angle : SmallInt;
+ color_ndx : Word;
+ shape_ndx : Word;
+ end;
+
+type
+ PXkbTextDoodadPtr = ^TXkbTextDoodadRec;
+ TXkbTextDoodadRec = record
+ name : TAtom;
+ _type : Byte;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ angle : SmallInt;
+ width : SmallInt;
+ height : SmallInt;
+ color_ndx : Word;
+ text : PChar;
+ font : PChar;
+ end;
+
+type
+ PXkbIndicatorDoodadPtr = ^TXkbIndicatorDoodadRec;
+ TXkbIndicatorDoodadRec = record
+ name : TAtom;
+ _type : Byte;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ angle : SmallInt;
+ shape_ndx : Word;
+ on_color_ndx : Word;
+ off_color_ndx : Word;
+ end;
+
+type
+ PXkbLogoDoodadPtr = ^TXkbLogoDoodadRec;
+ TXkbLogoDoodadRec = record
+ name : TAtom;
+ _type : Byte;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ angle : SmallInt;
+ color_ndx : Word;
+ shape_ndx : Word;
+ logo_name : PChar;
+ end;
+
+type
+ PXkbAnyDoodadPtr = ^TXkbAnyDoodadRec;
+ TXkbAnyDoodadRec = record
+ name : TAtom;
+ _type : Byte;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ angle : SmallInt;
+ end;
+
+type
+ PXkbDoodadPtr = ^TXkbDoodadRec;
+ TXkbDoodadRec = record
+ any : TXkbAnyDoodadRec;
+ shape : TXkbShapeDoodadRec;
+ text : TXkbTextDoodadRec;
+ indicator : TXkbIndicatorDoodadRec;
+ logo : TXkbLogoDoodadRec;
+ end;
+
+const
+ XkbUnknownDoodad = 0;
+ XkbOutlineDoodad = 1;
+ XkbSolidDoodad = 2;
+ XkbTextDoodad = 3;
+ XkbIndicatorDoodad = 4;
+ XkbLogoDoodad = 5;
+
+type
+ PXkbKeyPtr = ^TXkbKeyRec;
+ TXkbKeyRec = record
+ name : TXkbKeyNameRec;
+ gap : SmallInt;
+ shape_ndx : Byte;
+ color_ndx : Byte;
+ end;
+
+type
+ PXkbRowPtr = ^TXkbRowRec;
+ TXkbRowRec = record
+ top : SmallInt;
+ left : SmallInt;
+ num_keys : Word;
+ sz_keys : Word;
+ vertical : SmallInt;
+ Keys : PXkbKeyPtr;
+ bounds : TXkbBoundsRec;
+ end;
+
+type
+ PXkbOverlayPtr = ^TXkbOverlayRec; //forward for TXkbSectionRec use.
+
+//Do not add more "type"
+ PXkbSectionPtr = ^TXkbSectionRec;
+ TXkbSectionRec = record
+ name : TAtom;
+ priority : Byte;
+ top : SmallInt;
+ left : SmallInt;
+ width : Word;
+ height : Word;
+ angle : SmallInt;
+ num_rows : Word;
+ num_doodads : Word;
+ num_overlays : Word;
+ rows : PXkbRowPtr;
+ doodads : PXkbDoodadPtr;
+ bounds : TXkbBoundsRec;
+ overlays : PXkbOverlayPtr;
+ end;
+
+//Do not add more "type"
+ PXkbOverlayKeyPtr = ^TXkbOverlayKeyRec;
+ TXkbOverlayKeyRec = record
+ over : TXkbKeyNameRec;
+ under : TXkbKeyNameRec;
+ end;
+
+//Do not add more "type"
+ PXkbOverlayRowPtr = ^TXkbOverlayRowRec;
+ TXkbOverlayRowRec = record
+ row_under : SmallInt;
+ num_keys : SmallInt;
+ sz_keys : SmallInt;
+ keys : PXkbOverlayKeyPtr;
+ end;
+
+//Do not add more "type"
+ TXkbOverlayRec = record
+ name : TAtom;
+ section_under : PXkbSectionPtr;
+ num_rows : Word;
+ sz_rows : Word;
+ rows : PXkbOverlayRowPtr;
+ bounds : PXkbBoundsPtr;
+ end;
+
+type
+ PXkbGeometryRec = ^TXkbGeometryRec;
+ PXkbGeometryPtr = PXkbGeometryRec;
+ TXkbGeometryRec = record
+ name : TAtom;
+ width_mm : Word;
+ height_mm : Word;
+ label_font : PChar;
+ label_color : PXkbColorPtr;
+ base_color : PXkbColorPtr;
+ sz_properties : Word;
+ sz_colors : Word;
+ sz_shapes : Word;
+ sz_sections : Word;
+ sz_doodads : Word;
+ sz_key_aliases : Word;
+ num_properties : Word;
+ num_colors : Word;
+ num_shapes : Word;
+ num_sections : Word;
+ num_doodads : Word;
+ num_key_aliases : Word;
+ properties : PXkbPropertyPtr;
+ colors : PXkbColorPtr;
+ shapes : PXkbShapePtr;
+ sections : PXkbSectionPtr;
+ key_aliases : PXkbKeyAliasPtr;
+ end;
+
+const
+ XkbGeomPropertiesMask = 1 shl 0;
+ XkbGeomColorsMask = 1 shl 1;
+ XkbGeomShapesMask = 1 shl 2;
+ XkbGeomSectionsMask = 1 shl 3;
+ XkbGeomDoodadsMask = 1 shl 4;
+ XkbGeomKeyAliasesMask = 1 shl 5;
+ XkbGeomAllMask = $3f;
+
+type
+ PXkbGeometrySizesPtr = ^TXkbGeometrySizesRec;
+ TXkbGeometrySizesRec = record
+ which : Word;
+ num_properties : Word;
+ num_colors : Word;
+ num_shapes : Word;
+ num_sections : Word;
+ num_doodads : Word;
+ num_key_aliases : Word;
+ end;
+
+ {
+ Tie it all together into one big keyboard description
+ }
+type
+ PXkbDescPtr = ^TXkbDescRec;
+ TXkbDescRec = record
+ dpy : PDisplay;
+ flags : Word;
+ device_spec : Word;
+ min_key_code : TKeyCode;
+ max_key_code : TKeyCode;
+ ctrls : PXkbControlsPtr;
+ server : PXkbServerMapPtr;
+ map : PXkbClientMapPtr;
+ indicators : PXkbIndicatorPtr;
+ names : PXkbNamesPtr;
+ compat : PXkbCompatMapPtr;
+ geom : PXkbGeometryPtr;
+ end;
+
+function XkbKeyKeyTypeIndex (d : PXkbDescPtr; k : Word; g : Byte) : Byte;
+function XkbKeyKeyType (d : PXkbDescPtr; k : Word; g : Byte) : PXkbKeyTypePtr;
+function XkbKeyGroupWidth (d : PXkbDescPtr; k : Word; g : Byte) : Byte;
+function XkbKeyGroupsWidth (d : PXkbDescPtr; k : Word) : Byte;
+function XkbKeyGroupInfo (d : PXkbDescPtr; k : Word) : Byte;
+function XkbKeyNumGroups (d : PXkbDescPtr; k : Word) : Byte;
+function XkbKeyNumSyms (d : PXkbDescPtr; k : Word) : Word;
+function XkbKeySymsPtr (d : PXkbDescPtr; k : Word) : PKeySym;
+function XkbKeySym (d : PXkbDescPtr; k : Word; n : Word) : TKeySym;
+function XkbKeySymEntry (d : PXkbDescPtr; k : Word; sl : Word; g : Byte) : TKeySym;
+function XkbKeyAction (d : PXkbDescPtr; k : Word; n : Word) : PXkbAction;
+function XkbKeyActionEntry (d : PXkbDescPtr; k : Word; sl : Word; g : Byte) : Byte;
+function XkbKeyHasActions (d : PXkbDescPtr; k : Word) : Boolean;
+function XkbKeyNumActions (d : PXkbDescPtr; k : Word) : Word;
+function XkbKeyActionsPtr (d : PXkbDescPtr; k : Word) : PXkbAction;
+function XkbKeycodeInRange (d : PXkbDescPtr; k : Word) : Boolean;
+function XkbNumKeys (d : PXkbDescPtr) : Byte;
+
+ {
+ The following structures can be used to track changes
+ to a keyboard device
+ }
+type
+ PXkbMapChangesPtr = ^TXkbMapChangesRec;
+ TXkbMapChangesRec = record
+ changed : Word;
+ min_key_code : TKeyCode;
+ max_key_code : TKeyCode;
+ first_type : Byte;
+ num_types : Byte;
+ first_key_sym : TKeyCode;
+ num_key_syms : Byte;
+ first_key_act : TKeyCode;
+ num_key_acts : Byte;
+ first_key_behavior : TKeyCode;
+ num_key_behaviors : Byte;
+ first_key_explicit : TKeyCode;
+ num_key_explicit : Byte;
+ first_modmap_key : TKeyCode;
+ num_modmap_keys : Byte;
+ first_vmodmap_key : TKeyCode;
+ num_vmodmap_keys : Byte;
+ pad : Byte;
+ vmods : Word;
+ end;
+
+type
+ PXkbControlsChangesPtr = ^TXkbControlsChangesRec;
+ TXkbControlsChangesRec = record
+ changed_ctrls : Word;
+ enabled_ctrls_changes : Word;
+ num_groups_changed : Boolean;
+ end;
+
+type
+ PXkbIndicatorChangesPtr = ^TXkbIndicatorChangesRec;
+ TXkbIndicatorChangesRec = record
+ state_changes : Word;
+ map_changes : Word;
+ end;
+
+type
+ PXkbNameChangesPtr = ^TXkbNameChangesRec;
+ TXkbNameChangesRec = record
+ changed : Word;
+ first_type : Byte;
+ num_types : Byte;
+ first_lvl : Byte;
+ num_lvls : Byte;
+ num_aliases : Byte;
+ num_rg : Byte;
+ first_key : Byte;
+ num_keys : Byte;
+ changed_vmods : Word;
+ changed_indicators : LongWord;
+ changed_groups : Byte;
+ end;
+
+type
+ PXkbCompatChangesPtr = ^TXkbCompatChangesRec;
+ TXkbCompatChangesRec = record
+ changed_groups : Byte;
+ first_si : Word;
+ num_si : Word;
+ end;
+
+type
+ PXkbChangesPtr = ^TXkbChangesRec;
+ TXkbChangesRec = record
+ device_spec : Word;
+ state_changes : Word;
+ map : TXkbMapChangesRec;
+ ctrls : TXkbControlsChangesRec;
+ indicators : TXkbIndicatorChangesRec;
+ names : TXkbNameChangesRec;
+ compat : TXkbCompatChangesRec;
+ end;
+
+ {
+ These data structures are used to construct a keymap from
+ a set of components or to list components in the server
+ database.
+ }
+type
+ PXkbComponentNamesPtr = ^TXkbComponentNamesRec;
+ TXkbComponentNamesRec = record
+ keymap : PShortInt;
+ keycodes : PShortInt;
+ types : PShortInt;
+ compat : PShortInt;
+ symbols : PShortInt;
+ geometry : PShortInt;
+ end;
+
+type
+ PXkbComponentNamePtr = ^TXkbComponentNameRec;
+ TXkbComponentNameRec = record
+ flags : Word;
+ name : PChar;
+ end;
+
+type
+ PXkbComponentListPtr = ^TXkbComponentListRec;
+ TXkbComponentListRec = record
+ num_keymaps : SmallInt;
+ num_keycodes : SmallInt;
+ num_types : SmallInt;
+ num_compat : SmallInt;
+ num_symbols : SmallInt;
+ num_geometry : SmallInt;
+ keymaps : PXkbComponentNamePtr;
+ keycodes : PXkbComponentNamePtr;
+ types : PXkbComponentNamePtr;
+ compat : PXkbComponentNamePtr;
+ symbols : PXkbComponentNamePtr;
+ geometry : PXkbComponentNamePtr;
+ end;
+
+ {
+ The following data structures describe and track changes to a
+ non-keyboard extension device
+ }
+type
+ PXkbDeviceLedInfoPtr = ^TXkbDeviceLedInfoRec;
+ TXkbDeviceLedInfoRec = record
+ led_class : Word;
+ led_id : Word;
+ phys_indicators : Word;
+ maps_present : Word;
+ names_present : Word;
+ state : Word;
+ names : array [0..XkbNumIndicators -1] of TAtom;
+ maps : array [0..XkbNumIndicators -1] of TXkbIndicatorMapRec;
+ end;
+
+type
+ PXkbDeviceInfoPtr = ^TXkbDeviceInfoRec;
+ TXkbDeviceInfoRec = record
+ name : PChar;
+ _type : TAtom;
+ device_spec : Word;
+ has_own_state : Boolean;
+ supported : Word;
+ unsupported : Word;
+ num_btns : Word;
+ btn_acts : PXkbAction;
+ sz_leds : Word;
+ num_leds : Word;
+ dflt_kbd_fb : Word;
+ dflt_led_fb : Word;
+ leds : PXkbDeviceLedInfoPtr;
+ end;
+
+function XkbXI_DevHasBtnActs (d : PXkbDeviceInfoPtr) : Boolean;
+function XkbXI_LegalDevBtn (d : PXkbDeviceInfoPtr; b : Word) : Boolean;
+function XkbXI_DevHasLeds (d : PXkbDeviceInfoPtr) : Boolean;
+
+type
+ PXkbDeviceLedChangesPtr = ^TXkbDeviceLedChangesRec;
+ TXkbDeviceLedChangesRec = record
+ led_class : Word;
+ led_id : Word;
+ defined : Word; //names or maps changed
+ next : PXkbDeviceLedChangesPtr;
+ end;
+
+type
+ PXkbDeviceChangesPtr = ^TXkbDeviceChangesRec;
+ TXkbDeviceChangesRec = record
+ changed : Word;
+ first_btn : Word;
+ num_btns : Word;
+ leds : TXkbDeviceLedChangesRec;
+ end;
+
+function XkbShapeDoodadColor (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr) : PXkbColorPtr;
+function XkbShapeDoodadShape (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr) : PXkbShapePtr;
+procedure XkbSetShapeDoodadColor (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr; c : PXkbColorPtr);
+procedure XkbSetShapeDoodadShape (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr; s : PXkbShapePtr);
+
+function XkbTextDoodadColor (g : PXkbGeometryPtr; d : PXkbTextDoodadPtr) : PXkbColorPtr;
+procedure XkbSetTextDoodadColor (g : PXkbGeometryPtr; d : PXkbTextDoodadPtr; c : PXkbColorPtr);
+
+function XkbIndicatorDoodadShape (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr)
+ : PXkbShapeDoodadPtr;
+function XkbIndicatorDoodadOnColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr) : PXkbColorPtr;
+function XkbIndicatorDoodadOffColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr) : PXkbColorPtr;
+procedure XkbSetIndicatorDoodadOnColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ c : PXkbColorPtr);
+procedure XkbSetIndicatorDoodadOffColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ c : PXkbColorPtr);
+procedure XkbSetIndicatorDoodadShape (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ s : PXkbShapeDoodadPtr);
+
+function XkbLogoDoodadColor (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr) : PXkbColorPtr;
+function XkbLogoDoodadShape (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr) : PXkbShapeDoodadPtr;
+procedure XkbSetLogoDoodadColor (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr; c : PXkbColorPtr);
+procedure XkbSetLogoDoodadShape (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr; s : PXkbShapeDoodadPtr);
+
+function XkbKeyShape (g : PXkbGeometryPtr; k : PXkbKeyPtr) : PXkbShapeDoodadPtr;
+function XkbKeyColor (g : PXkbGeometryPtr; k : PXkbKeyPtr) : PXkbColorPtr;
+procedure XkbSetKeyShape (g : PXkbGeometryPtr; k : PXkbKeyPtr; s : PXkbShapeDoodadPtr);
+procedure XkbSetKeyColor (g : PXkbGeometryPtr; k : PXkbKeyPtr; c : PXkbColorPtr);
+
+function XkbGeomColorIndex (g : PXkbGeometryPtr; c : PXkbColorPtr) : longint;
+
+function XkbAddGeomProperty (geom : PXkbGeometryPtr; name : PChar; value : PChar) : PXkbPropertyPtr;
+ cdecl; external libX11 name 'XkbAddGeomProperty';
+
+function XkbAddGeomKeyAlias (geom : PXkbGeometryPtr; alias : PChar; real : PChar) : PXkbKeyAliasPtr;
+ cdecl; external libX11 name 'XkbAddGeomKeyAlias';
+
+function XkbAddGeomColor (geom : PXkbGeometryPtr; spec : PChar; pixel : Word) : PXkbColorPtr;
+ cdecl; external libX11 name 'XkbAddGeomColor';
+
+function XkbAddGeomOutline (shape : PXkbShapePtr; sz_points : SmallInt) : PXkbOutlinePtr;
+ cdecl; external libX11 name 'XkbAddGeomOutline';
+
+function XkbAddGeomShape (geom : PXkbGeometryPtr; name : TAtom; sz_outlines : SmallInt) : PXkbShapePtr;
+ cdecl; external libX11 name 'XkbAddGeomShape';
+
+function XkbAddGeomKey (row : PXkbRowPtr) : PXkbKeyPtr;
+ cdecl; external libX11 name 'XkbAddGeomKey';
+
+function XkbAddGeomRow (section : PXkbSectionPtr; sz_keys : SmallInt) : PXkbRowPtr;
+ cdecl; external libX11 name 'XkbAddGeomRow';
+
+function XkbAddGeomSection (geom : PXkbGeometryPtr; name : TAtom;
+ sz_rows : SmallInt; sz_doodads : SmallInt;
+ sz_overlays : SmallInt) : PXkbSectionPtr;
+ cdecl; external libX11 name 'XkbAddGeomSection';
+
+function XkbAddGeomOverlay (section : PXkbSectionPtr; name : TAtom; sz_rows : SmallInt) : PXkbOverlayPtr;
+ cdecl; external libX11 name 'XkbAddGeomOverlay';
+
+function XkbAddGeomOverlayRow (overlay : PXkbOverlayPtr; row_under : SmallInt;
+ sz_keys : SmallInt) : PXkbOverlayRowPtr;
+ cdecl; external libX11 name 'XkbAddGeomOverlayRow';
+
+function XkbAddGeomOverlayKey (overlay : PXkbOverlayPtr; row : PXkbOverlayRowPtr;
+ over : PChar; under : PChar) : PXkbOverlayKeyPtr;
+ cdecl; external libX11 name 'XkbAddGeomOverlayKey';
+
+function XkbAddGeomDoodad (geom : PXkbGeometryPtr; section : PXkbSectionPtr; name : TAtom) : PXkbDoodadPtr;
+ cdecl; external libX11 name 'XkbAddGeomDoodad';
+
+procedure XkbFreeGeomKeyAliases (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomKeyAliases';
+
+procedure XkbFreeGeomColors (geom : PXkbGeometryPtr; first : SmallInt; count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomColors';
+
+procedure XkbFreeGeomDoodads (doodads : PXkbDoodadPtr; nDoodads : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomDoodads';
+
+procedure XkbFreeGeomProperties (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomProperties';
+
+procedure XkbFreeGeomOverlayKeys (row : PXkbOverlayRowPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlayKeys';
+
+procedure XkbFreeGeomOverlayRows (overlay : PXkbOverlayPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlayRows';
+
+procedure XkbFreeGeomOverlays (section : PXkbSectionPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlays';
+
+procedure XkbFreeGeomKeys (row : PXkbRowPtr; first : SmallInt; count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomKeys';
+
+procedure XkbFreeGeomRows (section : PXkbSectionPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomRows';
+
+procedure XkbFreeGeomSections (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomSections';
+
+procedure XkbFreeGeomPoints (outline : PXkbOutlinePtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomPoints';
+
+procedure XkbFreeGeomOutlines (shape : PXkbShapePtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOutlines';
+
+procedure XkbFreeGeomShapes (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomShapes';
+
+procedure XkbFreeGeometry (geom : PXkbGeometryPtr; which : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeometry';
+
+function XkbAllocGeomProps (geom : PXkbGeometryPtr; nProps : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomProps';
+
+function XkbAllocGeomKeyAliases (geom : PXkbGeometryPtr; nAliases : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomKeyAliases';
+
+function XkbAllocGeomColors (geom : PXkbGeometryPtr; nColors : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomColors';
+
+function XkbAllocGeomShapes (geom : PXkbGeometryPtr; nShapes : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomShapes';
+
+function XkbAllocGeomSections (geom : PXkbGeometryPtr; nSections : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomSections';
+
+function XkbAllocGeomOverlays (section : PXkbSectionPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlays';
+
+function XkbAllocGeomOverlayRows (overlay : PXkbOverlayPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlayRows';
+
+function XkbAllocGeomOverlayKeys (row : PXkbOverlayRowPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlayKeys';
+
+function XkbAllocGeomDoodads (geom : PXkbGeometryPtr; nDoodads : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomDoodads';
+
+function XkbAllocGeomSectionDoodads (section : PXkbSectionPtr; nDoodads : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomSectionDoodads';
+
+function XkbAllocGeomOutlines (shape : PXkbShapePtr; nOL : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOutlines';
+
+function XkbAllocGeomRows (section : PXkbSectionPtr; nRows : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomRows';
+
+function XkbAllocGeomPoints (ol : PXkbOutlinePtr; nPts : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomPoints';
+
+function XkbAllocGeomKeys (row : PXkbRowPtr; nKeys : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomKeys';
+
+function XkbAllocGeometry (xkb : PXkbDescPtr; sizes : PXkbGeometrySizesPtr) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeometry';
+
+function XkbSetGeometry (dpy : PDisplay; deviceSpec : Word; geom : PXkbGeometryPtr) : TStatus;
+ cdecl; external libX11 name 'XkbSetGeometry';
+
+function XkbComputeShapeTop (shape : PXkbShapePtr; bounds : PXkbBoundsPtr) : Boolean;
+ cdecl; external libX11 name 'XkbComputeShapeTop';
+
+function XkbComputeShapeBounds (shape : PXkbShapePtr) : Boolean;
+ cdecl; external libX11 name 'XkbComputeShapeBounds';
+
+function XkbComputeRowBounds (geom : PXkbGeometryPtr; section : PXkbSectionPtr; row : PXkbRowPtr) : Boolean;
+ cdecl; external libX11 name 'XkbComputeRowBounds';
+
+function XkbComputeSectionBounds (geom : PXkbGeometryPtr; section : PXkbSectionPtr) : Boolean;
+ cdecl; external libX11 name 'XkbComputeSectionBounds';
+
+function XkbFindOverlayForKey (geom : PXkbGeometryPtr; wanted : PXkbSectionPtr; under : PChar) : PChar;
+ cdecl; external libX11 name 'XkbFindOverlayForKey';
+
+function XkbGetGeometry (dpy : PDisplay; xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetGeometry';
+
+function XkbGetNamedGeometry (dpy : PDisplay; xkb : PXkbDescPtr; name : TAtom) : TStatus;
+ cdecl; external libX11 name 'XkbGetNamedGeometry';
+
+
+{$ifdef XKB_IN_SERVER}
+function SrvXkbAddGeomKeyAlias (geom : PXkbGeometryPtr; alias : PChar; real : PChar) : PXkbKeyAliasPtr;
+ cdecl; external libX11 name 'XkbAddGeomKeyAlias';
+
+function SrvXkbAddGeomColor (geom : PXkbGeometryPtr; spec : PChar; pixel : Word) : PXkbColorPtr;
+ cdecl; external libX11 name 'XkbAddGeomColor';
+
+function SrvXkbAddGeomDoodad (geom : PXkbGeometryPtr; section : PXkbSectionPtr;
+ name : TAtom) : PXkbDoodadPtr;
+ cdecl; external libX11 name 'XkbAddGeomDoodad';
+
+function SrvXkbAddGeomKey (geom : PXkbGeometryPtr; alias : PChar; real : PChar) : PXkbKeyAliasPtr;
+ cdecl; external libX11 name 'XkbAddGeomKeyAlias';
+
+function SrvXkbAddGeomOutline (shape : PXkbShapePtr; sz_points : SmallInt) : PXkbOutlinePtr;
+ cdecl; external libX11 name 'XkbAddGeomOutline';
+
+function SrvXkbAddGeomOverlay (overlay : PXkbOverlayPtr; row : PXkbOverlayRowPtr;
+ over : PChar; under : PChar) : PXkbOverlayKeyPtr;
+ cdecl; external libX11 name 'XkbAddGeomOverlayKey';
+
+function SrvXkbAddGeomOverlayRow (overlay : PXkbOverlayPtr; row_under : SmallInt;
+ sz_keys : SmallInt) : PXkbOverlayRowPtr
+ cdecl; external libX11 name 'XkbAddGeomOverlayRow';
+
+function SrvXkbAddGeomOverlayKey (overlay : PXkbOverlayPtr; row : PXkbOverlayRowPtr;
+ over : PChar; under : PChar) : PXkbOverlayKeyPtr;
+ cdecl; external libX11 name 'XkbAddGeomOverlayKey';
+
+function SrvXkbAddGeomProperty (geom : PXkbGeometryPtr; name : PChar; value : PChar) : PXkbPropertyPtr;
+ cdecl; external libX11 name 'XkbAddGeomProperty';
+
+function SrvXkbAddGeomRow (section : PXkbSectionPtr; sz_keys : SmallInt) : PXkbRowPtr;
+ cdecl; external libX11 name 'XkbAddGeomRow';
+
+function SrvXkbAddGeomSection (geom : PXkbGeometryPtr; name : TAtom;
+ sz_rows : SmallInt; sz_doodads : SmallInt;
+ sz_overlays : SmallInt) : PXkbSectionPtr;
+ cdecl; external libX11 name 'XkbAddGeomSection';
+
+function SrvXkbAddGeomShape (geom : PXkbGeometryPtr; name : TAtom; sz_outlines : SmallInt) : PXkbShapePtr;
+ cdecl; external libX11 name 'XkbAddGeomShape';
+
+function SrvXkbAllocGeomKeyAliases (geom : PXkbGeometryPtr; nAliases : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomKeyAliases';
+
+function SrvXkbAllocGeomColors (geom : PXkbGeometryPtr; nColors : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomColors';
+
+function SrvXkbAllocGeomDoodads (geom : PXkbGeometryPtr; nDoodads : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomDoodads';
+
+function SrvXkbAllocGeomKeys (row : PXkbRowPtr; nKeys : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomKeys';
+
+function SrvXkbAllocGeomOutlines (shape : PXkbShapePtr; nOL : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOutlines';
+
+function SrvXkbAllocGeomPoints (ol : PXkbOutlinePtr; nPts : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomPoints';
+
+function SrvXkbAllocGeomProps (geom : PXkbGeometryPtr; nProps : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomProps';
+
+function SrvXkbAllocGeomRows (section : PXkbSectionPtr; nRows : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomRows';
+
+function SrvXkbAllocGeomSectionDoodads (section : PXkbSectionPtr; nDoodads : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomSectionDoodads';
+
+function SrvXkbAllocGeomSections (geom : PXkbGeometryPtr; nSections : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomSections';
+
+function SrvXkbAllocGeomOverlays (section : PXkbSectionPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlays';
+
+function SrvXkbAllocGeomOverlayRows (overlay : PXkbOverlayPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlayRows';
+
+function SrvXkbAllocGeomOverlayKeys (row : PXkbOverlayRowPtr; num_needed : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomOverlayKeys';
+
+function SrvXkbAllocGeomShapes (geom : PXkbGeometryPtr; nShapes : SmallInt) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeomShapes';
+
+function SrvXkbAllocGeometry (xkb : PXkbDescPtr; sizes : PXkbGeometrySizesPtr) : TStatus;
+ cdecl; external libX11 name 'XkbAllocGeometry';
+
+procedure SrvXkbFreeGeomKeyAliases (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomKeyAliases';
+
+procedure SrvXkbFreeGeomColors (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomColors';
+
+procedure SrvXkbFreeGeomDoodads (doodads : PXkbDoodadPtr; nDoodads : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomDoodads';
+
+procedure SrvXkbFreeGeomProperties (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomProperties';
+
+procedure SrvXkbFreeGeomOverlayKeys (row : PXkbOverlayRowPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlayKeys';
+
+procedure SrvXkbFreeGeomOverlayRows (overlay : PXkbOverlayPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlayRows';
+
+procedure SrvXkbFreeGeomOverlays (section : PXkbSectionPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOverlays';
+
+procedure SrvXkbFreeGeomKeys (row : PXkbRowPtr; first : SmallInt; count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomKeys';
+
+procedure SrvXkbFreeGeomRows (section : PXkbSectionPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomRows';
+
+procedure SrvXkbFreeGeomSections (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomSections';
+
+procedure SrvXkbFreeGeomPoints (outline : PXkbOutlinePtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomPoints';
+
+procedure SrvXkbFreeGeomOutlines (shape : PXkbShapePtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomOutlines';
+
+procedure SrvXkbFreeGeomShapes (geom : PXkbGeometryPtr; first : SmallInt;
+ count : SmallInt; freeAll : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeomShapes';
+
+procedure SrvXkbFreeGeometry (geom : PXkbGeometryPtr; which : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeGeometry';
+{$endif}
+
+implementation
+uses xi;
+
+(************************************* xkb *************************************)
+function XkbLegalXILedClass (c : Cardinal) : LongBool;
+begin
+{#define XkbLegalXILedClass(c) (((c)==KbdFeedbackClass)||((c)==LedFeedbackClass)||
+ ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))}
+ Result := (c = KbdFeedbackClass) or (c = LedFeedbackClass) or
+ (c = XkbDfltXIClass) or (c = XkbAllXIClasses);
+end;
+
+function XkbLegalXIBellClass (c : Cardinal) : LongBool;
+begin
+{#define XkbLegalXIBellClass(c) (((c)==KbdFeedbackClass)||((c)==BellFeedbackClass)||
+ ((c)==XkbDfltXIClass)||((c)==XkbAllXIClasses))}
+ Result := (c = KbdFeedbackClass) or (c = BellFeedbackClass) or
+ (c = XkbDfltXIClass) or (c = XkbAllXIClasses);
+end;
+
+function XkbExplicitXIDevice (c : Cardinal) : LongBool;
+begin
+{#define XkbExplicitXIDevice(c) (((c)&(~0xff))==0)}
+ Result := (c and (not $ff)) = 0;
+end;
+
+function XkbExplicitXIClass (c : Cardinal) : LongBool;
+begin
+{#define XkbExplicitXIClass(c) (((c)&(~0xff))==0)}
+ Result := (c and (not $ff)) = 0;
+end;
+
+function XkbExplicitXIId (c : Cardinal) : LongBool;
+begin
+{#define XkbExplicitXIId(c) (((c)&(~0xff))==0)}
+ Result := (c and (not $ff)) = 0;
+end;
+
+function XkbSingleXIClass (c : Cardinal) : LongBool;
+begin
+{#define XkbSingleXIClass(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIClass))}
+ Result := ((c and (not $ff)) = 0) or (c = XkbDfltXIClass);
+end;
+
+function XkbSingleXIId (c : Cardinal) : LongBool;
+begin
+{#define XkbSingleXIId(c) ((((c)&(~0xff))==0)||((c)==XkbDfltXIId))}
+ Result := ((c and (not $ff)) = 0) or (c = XkbDfltXIId);
+end;
+
+function XkbBuildCoreState (m, g : Cardinal) : Cardinal;
+begin
+{#define XkbBuildCoreState(m,g) ((((g)&0x3)<<13)|((m)&0xff))}
+ Result := ((g and $3) shl 13) or (m and $ff);
+end;
+
+function XkbGroupForCoreState (s : Cardinal) : Cardinal;
+begin
+{#define XkbGroupForCoreState(s) (((s)>>13)&0x3)}
+ Result := (s shr 13) and $3;
+end;
+
+function XkbIsLegalGroup (g : Cardinal) : LongBool;
+begin
+{#define XkbIsLegalGroup(g) (((g)>=0)&&((g)<XkbNumKbdGroups))}
+ Result := (g >= 0) and (g < XkbNumKbdGroups);
+end;
+
+function XkbSA_ValOp (a : Cardinal) : Cardinal;
+begin
+{#define XkbSA_ValOp(a) ((a)&XkbSA_ValOpMask)}
+ Result := a and XkbSA_ValOpMask;
+end;
+
+function XkbSA_ValScale (a : Cardinal) : Cardinal;
+begin
+{#define XkbSA_ValScale(a) ((a)&XkbSA_ValScaleMask)}
+ Result := a and XkbSA_ValScaleMask;
+end;
+
+function XkbIsModAction (a : PXkbAnyAction) : LongBool;
+begin
+{#define XkbIsModAction(a) (((a)->type>=Xkb_SASetMods)&&((a)->type<=XkbSA_LockMods))}
+ Result := (a^._type >= XkbSA_SetMods) and (a^._type <= XkbSA_LockMods);
+end;
+
+function XkbIsGroupAction (a : PXkbAnyAction) : LongBool;
+begin
+{#define XkbIsGroupAction(a) (((a)->type>=XkbSA_SetGroup)&&((a)->type<=XkbSA_LockGroup))}
+ Result := (a^._type >= XkbSA_SetGroup) or (a^._type <= XkbSA_LockGroup);
+end;
+
+function XkbIsPtrAction (a : PXkbAnyAction) : LongBool;
+begin
+{#define XkbIsPtrAction(a) (((a)->type>=XkbSA_MovePtr)&&((a)->type<=XkbSA_SetPtrDflt))}
+ Result := (a^._type >= XkbSA_MovePtr) and (a^._type <= XkbSA_SetPtrDflt);
+end;
+
+function XkbIsLegalKeycode (const k : Cardinal) : LongBool;
+begin
+{#define XkbIsLegalKeycode(k) (((k)>=XkbMinLegalKeyCode)&&((k)<=XkbMaxLegalKeyCode))}
+ Result := (k >= XkbMinLegalKeyCode) and (k <= XkbMaxLegalKeyCode);
+end;
+
+function XkbShiftLevel (n : Byte) : Byte;
+begin
+{#define XkbShiftLevel(n) ((n)-1)}
+ Result := n -1;
+end;
+
+function XkbShiftLevelMask (n : Byte) : Byte;
+begin
+{#define XkbShiftLevelMask(n) (1<<((n)-1))}
+ Result := 1 shl (n - 1);
+end;
+
+(********************************** End of xkb **********************************)
+
+(************************************ xkbstr ************************************)
+function XkbCharToInt (v : Byte) : SmallInt;
+begin
+{#define XkbCharToInt(v) ((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))}
+ if ((v and $80)<>0) then
+ Result := v or (not $ff)
+ else
+ Result := longint (v) and $7f;
+end;
+
+procedure XkbIntTo2Chars (i : word; var h, l : byte);
+begin
+{#define XkbIntTo2Chars(i,h,l) (((h)=((i>>8)&0xff)),((l)=((i)&0xff)))}
+ h := (i shr 8) and $ff;
+ l := i and $ff;
+end;
+
+function Xkb2CharsToInt (h, l : Byte) : SmallInt;
+begin
+{$IFDEF WORD64}
+ {$IFDEF UNSIGNEDBITFIELDS}
+ {$DEFINE BIT64}
+ {$ENDIF}
+{$ENDIF}
+{$IFDEF BIT64}
+{$UNDEF BIT64}
+{#define Xkb2CharsToInt(h,l) ((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)): (int)(((h)<<8)|(l)&0x7fff))}
+ if ((h = $80) <> 0) then
+ Result := ((LongInt (h) shl 8) or l or (not $ffff))
+ else
+ Result := ((LongInt (h) shl 8) or l and $7fff));
+{$ELSE}
+{#define Xkb2CharsToInt(h,l) ((short)(((h)<<8)|(l)))}
+ Result := (integer (h) shl 8) or l;
+{$ENDIF}
+end;
+
+function XkbModLocks (s : PXkbStatePtr) : Byte;
+begin
+{#define XkbModLocks(s) ((s)->locked_mods)}
+ Result := s^.locked_mods;
+end;
+
+function XkbStateMods (s : PXkbStatePtr) : Word;
+begin
+{#define XkbStateMods(s) ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))}
+ Result := s^.base_mods or s^.latched_mods or XkbModLocks (s);
+end;
+
+function XkbGroupLock (s : PXkbStatePtr) : Byte;
+begin
+{#define XkbGroupLock(s) ((s)->locked_group)}
+ Result := s^.locked_group;
+end;
+
+function XkbStateGroup (s : PXkbStatePtr) : Word;
+begin
+{#define XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))}
+ Result := S^.base_group + s^.latched_group + XkbGroupLock (s);
+end;
+
+function XkbStateFieldFromRec (s : PXkbStatePtr) : Cardinal;
+begin
+{#define XkbStateFieldFromRec(s) XkbBuildCoreState((s)->lookup_mods,(s)->group)}
+ Result := XkbBuildCoreState (s^.lookup_mods, s^.group);
+end;
+
+function XkbGrabStateFromRec (s : PXkbStatePtr) : Cardinal;
+begin
+{#define XkbGrabStateFromRec(s) XkbBuildCoreState((s)->grab_mods,(s)->group)}
+ Result := XkbBuildCoreState (s^.grab_mods, s^.group);
+end;
+
+function XkbNumGroups (g : Word) : Word;
+begin
+{#define XkbNumGroups(g) ((g)&0x0f)}
+ Result := g and $0f;
+end;
+
+function XkbOutOfRangeGroupInfo (g : Word) : Word;
+begin
+{#define XkbOutOfRangeGroupInfo(g) ((g)&0xf0)}
+ Result := g and $f0;
+end;
+
+function XkbOutOfRangeGroupAction (g : Word) : Word;
+begin
+{#define XkbOutOfRangeGroupAction(g) ((g)&0xc0)}
+ Result := g and $c0;
+end;
+
+function XkbOutOfRangeGroupNumber (g : Word) : Word;
+begin
+{#define XkbOutOfRangeGroupNumber(g) (((g)&0x30)>>4)}
+ Result := (g and $30) shr 4;
+end;
+
+function XkbSetGroupInfo (g, w, n : Word) : Word;
+begin
+{#define XkbSetGroupInfo(g,w,n) (((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))}
+ Result := (w and $c0) or ((n and 3) shl 4) or (g and $0f);
+end;
+
+function XkbSetNumGroups (g, n : Word) : Word;
+begin
+{#define XkbSetNumGroups(g,n) (((g)&0xf0)|((n)&0x0f))}
+ Result := (g and $f0) or (n and $0f);
+end;
+
+function XkbModActionVMods (a : PXkbModAction) : SmallInt;
+begin
+{#define XkbModActionVMods(a) ((short)(((a)->vmods1<<8)|((a)->vmods2)))}
+ Result := (integer (a^.vmods1) shl 8) or a^.vmods2;
+end;
+
+procedure XkbSetModActionVMods (a : PXkbModAction; v : Byte);
+begin
+{#define XkbSetModActionVMods(a,v) (((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))}
+ a^.vmods1 := (v shr 8) and $ff;
+ a^.vmods2 := v and $ff;
+end;
+
+function XkbSAGroup (a : PXkbGroupAction) : ShortInt;
+begin
+{#define XkbSAGroup(a) (XkbCharToInt((a)->group_XXX))}
+ Result := ShortInt(XkbCharToInt(a^.group_XXX));
+end;
+
+procedure XkbSASetGroup (a : PXkbGroupAction; g : ShortInt);
+begin
+{#define XkbSASetGroup(a,g) ((a)->group_XXX=(g))}
+ a^.group_XXX := g;
+end;
+
+function XkbPtrActionX (a : PXkbPtrAction) : Word;
+begin
+{#define XkbPtrActionX(a) (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))}
+ Result := Word(Xkb2CharsToInt(a^.high_XXX,a^.low_XXX));
+end;
+
+function XkbPtrActionY (a : PXkbPtrAction) : Word;
+begin
+{#define XkbPtrActionY(a) (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))}
+ Result := Word(Xkb2CharsToInt(a^.high_YYY,a^.low_YYY));
+end;
+
+procedure XkbSetPtrActionX (a : PXkbPtrAction; x : Byte);
+begin
+{#define XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))}
+ XkbIntTo2Chars(x, a^.high_XXX, a^.low_XXX);
+end;
+
+procedure XkbSetPtrActionY (a : PXkbPtrAction; y : Byte);
+begin
+{#define XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))}
+ XkbIntTo2Chars (y, a^.high_YYY, a^.low_YYY);
+end;
+
+function XkbSAPtrDfltValue (a : PXkbPtrDfltAction) : ShortInt;
+begin
+{#define XkbSAPtrDfltValue(a) (XkbCharToInt((a)->valueXXX))}
+ Result := ShortInt (XkbCharToInt(a^.valueXXX));
+end;
+
+procedure XkbSASetPtrDfltValue (a : PXkbPtrDfltAction; const c);
+begin
+{#define XkbSASetPtrDfltValue(a,c) ((a)->valueXXX= ((c)&0xff))}
+ a^.valueXXX := ShortInt (c) and $ff;
+end;
+
+function XkbSAScreen (a : PXkbSwitchScreenAction) : ShortInt;
+begin
+{#define XkbSAScreen(a) (XkbCharToInt((a)->screenXXX))}
+ Result := ShortInt (XkbCharToInt(a^.screenXXX));
+end;
+
+procedure XkbSASetScreen (a : PXkbSwitchScreenAction; const s);
+begin
+{#define XkbSASetScreen(a,s) ((a)->screenXXX= ((s)&0xff))}
+ a^.screenXXX := ShortInt (s) and $ff;
+end;
+
+procedure XkbActionSetCtrls (a : PXkbCtrlsAction; c : Byte);
+begin
+{#define XkbActionSetCtrls(a,c) (((a)->ctrls3=(((c)>>24)&0xff)),((a)->ctrls2=(((c)>>16)&0xff)),
+ ((a)->ctrls1=(((c)>>8)&0xff)),((a)->ctrls0=((c)&0xff))) }
+ a^.ctrls3 := ((c shr 24) and $ff);
+ a^.ctrls2 := ((c shr 16) and $ff);
+ a^.ctrls1 := ((c shr 8) and $ff);
+ a^.ctrls0 := (c and $ff);
+end;
+
+function XkbActionCtrls (a : PXkbCtrlsAction) : Word;
+begin
+{#define XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|(((unsigned int)(a)->ctrls2)<<16)|
+ (((unsigned int)(a)->ctrls1)<<8)|((unsigned int)((a)->ctrls0))) }
+ Result := (a^.ctrls3 shl 24) or
+ (a^.ctrls2 shl 16) or
+ (a^.ctrls1 shl 8) or
+ a^.ctrls0;
+end;
+
+function XkbSARedirectVMods (a : PXkbRedirectKeyAction) : Word;
+begin
+{#define XkbSARedirectVMods(a) ((((unsigned int)(a)->vmods1)<<8)|((unsigned int)(a)->vmods0))}
+ Result := (a^.vmods1 shl 8) or
+ a^.vmods0;
+end;
+
+procedure XkbSARedirectSetVMods (a : PXkbRedirectKeyAction; m : Byte);
+begin
+{#define XkbSARedirectSetVMods(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))}
+ a^.vmods_mask1 := (m shr 8) and $ff;
+ a^.vmods_mask0 := m or $ff;
+end;
+
+function XkbSARedirectVModsMask (a : PXkbRedirectKeyAction) : Word;
+begin
+{#define XkbSARedirectVModsMask(a) ((((unsigned int)(a)->vmods_mask1)<<8)|
+ ((unsigned int)(a)->vmods_mask0))}
+ Result := (a^.vmods_mask1 shl 8) or
+ a^.vmods_mask0;
+end;
+
+procedure XkbSARedirectSetVModsMask (a : PXkbRedirectKeyAction; m : Byte);
+begin
+{#define XkbSARedirectSetVModsMask(a,m) (((a)->vmods_mask1=(((m)>>8)&0xff)),((a)->vmods_mask0=((m)&0xff)))}
+ a^.vmods_mask1 := (m shr 8) and $ff;
+ a^.vmods_mask0 := (m and $ff);
+end;
+
+function XkbAX_AnyFeedback (c : PXkbControlsPtr) : Word;
+begin
+{#define XkbAX_AnyFeedback(c) ((c)->enabled_ctrls&XkbAccessXFeedbackMask)}
+ Result := c^.enabled_ctrls and XkbAccessXFeedbackMask;
+end;
+
+function XkbAX_NeedOption (c : PXkbControlsPtr; w : Word) : Word;
+begin
+{#define XkbAX_NeedOption(c,w) ((c)->ax_options&(w))}
+ Result := c^.ax_options and w;
+end;
+
+function XkbAX_NeedFeedback (c : PXkbControlsPtr; w : Word) : Boolean;
+begin
+{#define XkbAX_NeedFeedback(c,w) (XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))}
+ Result := (XkbAX_AnyFeedback (c) > 0) and (XkbAX_NeedOption (c, w) > 0);
+end;
+
+function XkbSMKeyActionsPtr (m : PXkbServerMapPtr; k : Word) : PXkbAction;
+begin
+{#define XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])}
+ Result := @m^.acts [m^.key_acts [k]];
+end;
+
+function XkbCMKeyGroupInfo (m : PXkbClientMapPtr; k : Word) : Byte;
+begin
+{#define XkbCMKeyGroupInfo(m,k) ((m)->key_sym_map[k].group_info)}
+ Result := m^.key_sym_map [k].group_info;
+end;
+
+function XkbCMKeyNumGroups (m : PXkbClientMapPtr; k : Word) : Byte;
+begin
+{#define XkbCMKeyNumGroups(m,k) (XkbNumGroups((m)->key_sym_map[k].group_info))}
+ Result := XkbNumGroups (m^.key_sym_map [k].group_info);
+end;
+
+function XkbCMKeyGroupWidth (m : PXkbClientMapPtr; k : Word; g : Byte) : Byte;
+begin
+{#define XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)}
+ Result := XkbCMKeyType(m,k,g)^.num_levels;
+end;
+
+function XkbCMKeyGroupsWidth (m : PXkbClientMapPtr; K : Word) : Byte;
+begin
+{#define XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)}
+ Result := m^.key_sym_map [k].width;
+end;
+
+function XkbCMKeyTypeIndex (m : PXkbClientMapPtr; k : Word; g : Byte) : Byte;
+begin
+{#define XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])}
+ Result := m^.key_sym_map [k].kt_index [g and $3];
+end;
+
+function XkbCMKeyType (m : PXkbClientMapPtr; k : Word; g : Byte) : PXkbKeyTypePtr;
+begin
+{#define XkbCMKeyType(m,k,g) (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])}
+ Result := @m^.types [XkbCMKeyTypeIndex(m,k,g)];
+end;
+
+function XkbCMKeyNumSyms (m : PXkbClientMapPtr; k : Word) : Word;
+begin
+{#define XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))}
+ Result := XkbCMKeyGroupsWidth (m,k) or XkbCMKeyNumGroups(m,k);
+end;
+
+function XkbCMKeySymsOffset (m : PXkbClientMapPtr; k : Word) : Byte;
+begin
+{#define XkbCMKeySymsOffset(m,k) ((m)->key_sym_map[k].offset)}
+ Result := m^.key_sym_map [k].offset;
+end;
+
+function XkbCMKeySymsPtr (m : PXkbClientMapPtr; k : Word) : PKeySym;
+begin
+{#define XkbCMKeySymsPtr(m,k) (&(m)->syms[XkbCMKeySymsOffset(m,k)])}
+ Result := @m^.syms [XkbCMKeySymsOffset(m,k)];
+end;
+
+function XkbIM_IsAuto (i : PXkbIndicatorMapPtr) : Boolean;
+begin
+{#define XkbIM_IsAuto(i) ((((i)->flags&XkbIM_NoAutomatic)==0)&&(((i)->which_groups&&(i)->groups)||
+ ((i)->which_mods&&(i)->mods.mask)|| ((i)->ctrls)))}
+ Result := ((i^.flags and XkbIM_NoAutomatic) = 0) and
+ (((i^.which_groups > 0) and (i^.groups > 0)) or
+ ((i^.which_mods > 0) and (i^.mods.mask > 0)) or
+ (i^.ctrls > 0));
+end;
+
+function XkbIM_InUse (i : PXkbIndicatorMapPtr) : Boolean;
+begin
+{#define XkbIM_InUse(i) (((i)->flags)||((i)->which_groups)||((i)->which_mods)||((i)->ctrls)) }
+ Result := (i^.flags > 0) or (i^.which_groups > 0) or (i^.which_mods > 0) or (i^.ctrls > 0);
+end;
+
+function XkbKeyKeyTypeIndex (d : PXkbDescPtr; k : Word; g : Byte) : Byte;
+begin
+{#define XkbKeyKeyTypeIndex(d,k,g) (XkbCMKeyTypeIndex((d)->map,k,g))}
+ Result := XkbCMKeyTypeIndex(d^.map, k, g);
+end;
+
+function XkbKeyKeyType (d : PXkbDescPtr; k : Word; g : Byte) : PXkbKeyTypePtr;
+begin
+{#define XkbKeyKeyType(d,k,g) (XkbCMKeyType((d)->map,k,g))}
+ Result := XkbCMKeyType(d^.map, k, g);
+end;
+
+function XkbKeyGroupWidth (d : PXkbDescPtr; k : Word; g : Byte) : Byte;
+begin
+{#define XkbKeyGroupWidth(d,k,g) (XkbCMKeyGroupWidth((d)->map,k,g))}
+ Result := XkbCMKeyGroupWidth(d^.map, k, g);
+end;
+
+function XkbKeyGroupsWidth (d : PXkbDescPtr; k : Word) : Byte;
+begin
+{#define XkbKeyGroupsWidth(d,k) (XkbCMKeyGroupsWidth((d)->map,k))}
+ Result := XkbCMKeyGroupsWidth (d^.map, k);
+end;
+
+function XkbKeyGroupInfo (d : PXkbDescPtr; k : Word) : Byte;
+begin
+{#define XkbKeyGroupInfo(d,k) (XkbCMKeyGroupInfo((d)->map,(k)))}
+ Result := XkbCMKeyGroupInfo (d^.map, k);
+end;
+
+function XkbKeyNumGroups (d : PXkbDescPtr; k : Word) : Byte;
+begin
+{#define XkbKeyNumGroups(d,k) (XkbCMKeyNumGroups((d)->map,(k)))}
+ Result := XkbCMKeyNumGroups(d^.map, k);
+end;
+
+function XkbKeyNumSyms (d : PXkbDescPtr; k : Word) : Word;
+begin
+{#define XkbKeyNumSyms(d,k) (XkbCMKeyNumSyms((d)->map,(k)))}
+ Result := XkbCMKeyNumSyms (d^.map, k);
+end;
+
+function XkbKeySymsPtr (d : PXkbDescPtr; k : Word) : PKeySym;
+begin
+{#define XkbKeySymsPtr(d,k) (XkbCMKeySymsPtr((d)->map,(k)))}
+ Result := XkbCMKeySymsPtr (d^.map, k);
+end;
+
+function XkbKeySym (d : PXkbDescPtr; k : Word; n : Word) : TKeySym;
+begin
+{#define XkbKeySym(d,k,n) (XkbKeySymsPtr(d,k)[n])}
+ Result := XkbKeySymsPtr(d, k) [n];
+end;
+
+function XkbKeySymEntry (d : PXkbDescPtr; k : Word; sl : Word; g : Byte) : TKeySym;
+begin
+{#define XkbKeySymEntry(d,k,sl,g) (XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))}
+ Result := XkbKeySym (d, k, (XkbKeyGroupsWidth(d, k) * g) + sl);
+end;
+
+function XkbKeyAction (d : PXkbDescPtr; k : Word; n : Word) : PXkbAction;
+begin
+{#define XkbKeyAction(d,k,n) (XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)}
+ if (XkbKeyHasActions(d,k)) then
+ Result := @TXkbAction(XkbKeyActionsPtr(d,k)[n]) //Buggy !!!
+ else
+ FillChar (Result, sizeof (TXkbAction), #0);
+end;
+
+function XkbKeyActionEntry (d : PXkbDescPtr; k : Word; sl : Word; g : Byte) : Byte;
+begin
+{#define XkbKeyActionEntry(d,k,sl,g) (XkbKeyHasActions(d,k) ?
+ XkbKeyAction(d, k, ((XkbKeyGroupsWidth(d, k) * (g))+(sl))):NULL)}
+ if (XkbKeyHasActions(d, k)) then
+ Result := (XkbKeyGroupsWidth(d, k) * g) + sl
+ else
+ Result := 0;
+end;
+
+function XkbKeyHasActions (d : PXkbDescPtr; k : Word) : Boolean;
+begin
+{#define XkbKeyHasActions(d,k) ((d)->server->key_acts[k]!=0)}
+ Result := (not (d^.server^.key_acts [k] = 0));
+end;
+
+function XkbKeyNumActions (d : PXkbDescPtr; k : Word) : Word;
+begin
+{#define XkbKeyNumActions(d,k) (XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)}
+ if (XkbKeyHasActions(d,k)) then
+ Result := XkbKeyNumSyms(d,k)
+ else
+ Result := 1;
+end;
+
+function XkbKeyActionsPtr (d : PXkbDescPtr; k : Word) : PXkbAction;
+begin
+{#define XkbKeyActionsPtr(d,k) (XkbSMKeyActionsPtr((d)->server,k))}
+ Result := XkbSMKeyActionsPtr(d^.server, k);
+end;
+
+function XkbKeycodeInRange (d : PXkbDescPtr; k : Word) : Boolean;
+begin
+{#define XkbKeycodeInRange(d,k) (((k)>=(d)->min_key_code)&& ((k)<=(d)->max_key_code))}
+ Result := (k >= d^.min_key_code) and (k <= d^.max_key_code);
+end;
+
+function XkbNumKeys (d : PXkbDescPtr) : Byte;
+begin
+{#define XkbNumKeys(d) ((d)->max_key_code-(d)->min_key_code+1)}
+ Result := d^.max_key_code - d^.min_key_code + 1;
+end;
+
+function XkbXI_DevHasBtnActs (d : PXkbDeviceInfoPtr) : Boolean;
+begin
+{#define XkbXI_DevHasBtnActs(d) (((d)->num_btns>0)&&((d)->btn_acts!=NULL))}
+ Result := (d^.num_btns > 0) and (not (d^.btn_acts = nil));
+end;
+
+function XkbXI_LegalDevBtn (d : PXkbDeviceInfoPtr; b : Word) : Boolean;
+begin
+{#define XkbXI_LegalDevBtn(d,b) (XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))}
+ Result := XkbXI_DevHasBtnActs(d) and (b < d^.num_btns);
+end;
+
+function XkbXI_DevHasLeds (d : PXkbDeviceInfoPtr) : Boolean;
+begin
+{#define XkbXI_DevHasLeds(d) (((d)->num_leds>0)&&((d)->leds!=NULL))}
+ Result := (d^.num_leds > 0) and (not (d^.leds = nil));
+end;
+(******************************** end of xkbstr ********************************)
+(*********************************** xkbgeom ***********************************)
+
+function XkbBoundsWidth (b : PXkbBoundsPtr) : SmallInt;
+begin
+{#define XkbBoundsWidth(b) (((b)->x2)-((b)->x1))}
+ Result := b^.x2 - b^.x1;
+end;
+
+function XkbBoundsHeight (b : PXkbBoundsPtr) : SmallInt;
+begin
+{#define XkbBoundsHeight(b) (((b)->y2)-((b)->y1))}
+ Result := b^.y2 - b^.y1;
+end;
+
+function XkbOutlineIndex (s : PXkbShapePtr; o : PXkbOutlinePtr) : longint;
+begin
+{#define XkbOutlineIndex(s,o) ((int)((o)-&(s)->outlines[0]))}
+ Result := longint(o - @s^.outlines [0]);
+end;
+
+function XkbShapeDoodadColor (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr) : PXkbColorPtr;
+begin
+{#define XkbShapeDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])}
+ Result := @(g^.colors [d^.color_ndx]);
+end;
+
+function XkbShapeDoodadShape (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr) : PXkbShapePtr;
+begin
+{#define XkbShapeDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])}
+ Result := @g^.shapes [d^.shape_ndx];
+end;
+
+procedure XkbSetShapeDoodadColor (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr; c : PXkbColorPtr);
+begin
+{#define XkbSetShapeDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])}
+ d^.color_ndx := c - @g^.colors [0];
+end;
+
+procedure XkbSetShapeDoodadShape (g : PXkbGeometryPtr; d : PXkbShapeDoodadPtr; s : PXkbShapePtr);
+begin
+{#define XkbSetShapeDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])}
+ d^.shape_ndx := PXkbShapePtr(s) - @g^.shapes [0];
+end;
+
+function XkbTextDoodadColor (g : PXkbGeometryPtr; d : PXkbTextDoodadPtr) : PXkbColorPtr;
+begin
+{#define XkbTextDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])}
+ Result := @g^.colors [d^.color_ndx];
+end;
+
+procedure XkbSetTextDoodadColor (g : PXkbGeometryPtr; d : PXkbTextDoodadPtr; c : PXkbColorPtr);
+begin
+{#define XkbSetTextDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])}
+ d^.color_ndx := c - @g^.colors [0];
+end;
+
+function XkbIndicatorDoodadShape (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr) : PXkbShapeDoodadPtr;
+begin
+{#define XkbIndicatorDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])}
+ Result := PXkbShapeDoodadPtr(@g^.shapes [d^.shape_ndx]);
+end;
+
+function XkbIndicatorDoodadOnColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr) : PXkbColorPtr;
+begin
+{#define XkbIndicatorDoodadOnColor(g,d) (&(g)->colors[(d)->on_color_ndx])}
+ Result := @g^.colors [d^.on_color_ndx];
+end;
+
+function XkbIndicatorDoodadOffColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr) : PXkbColorPtr;
+begin
+{#define XkbIndicatorDoodadOffColor(g,d) (&(g)->colors[(d)->off_color_ndx])}
+ Result := @g^.colors [d^.off_color_ndx];
+end;
+
+procedure XkbSetIndicatorDoodadOnColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ c : PXkbColorPtr);
+begin
+{#define XkbSetIndicatorDoodadOnColor(g,d,c) ((d)->on_color_ndx= (c)-&(g)->colors[0])}
+ d^.on_color_ndx := c - @g^.colors [0];
+end;
+
+procedure XkbSetIndicatorDoodadOffColor (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ c : PXkbColorPtr);
+begin
+{#define XkbSetIndicatorDoodadOffColor(g,d,c) ((d)->off_color_ndx= (c)-&(g)->colors[0])}
+ d^.off_color_ndx := c - @g^.colors [0];
+end;
+
+procedure XkbSetIndicatorDoodadShape (g : PXkbGeometryPtr; d : PXkbIndicatorDoodadPtr;
+ s : PXkbShapeDoodadPtr);
+begin
+{#define XkbSetIndicatorDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])}
+ d^.shape_ndx := PXkbShapePtr(s) - @g^.shapes [0];
+end;
+
+function XkbLogoDoodadColor (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr) : PXkbColorPtr;
+begin
+{#define XkbLogoDoodadColor(g,d) (&(g)->colors[(d)->color_ndx])}
+ Result := @g^.colors [d^.color_ndx];
+end;
+
+function XkbLogoDoodadShape (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr) : PXkbShapeDoodadPtr;
+begin
+{#define XkbLogoDoodadShape(g,d) (&(g)->shapes[(d)->shape_ndx])}
+ Result := PXkbShapeDoodadPtr(@g^.shapes [d^.shape_ndx]);
+end;
+
+procedure XkbSetLogoDoodadColor (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr; c : PXkbColorPtr);
+begin
+{#define XkbSetLogoDoodadColor(g,d,c) ((d)->color_ndx= (c)-&(g)->colors[0])}
+ d^.color_ndx := c - @g^.colors [0];
+end;
+
+procedure XkbSetLogoDoodadShape (g : PXkbGeometryPtr; d : PXkbLogoDoodadPtr; s : PXkbShapeDoodadPtr);
+begin
+{#define XkbSetLogoDoodadShape(g,d,s) ((d)->shape_ndx= (s)-&(g)->shapes[0])}
+ d^.shape_ndx := PXkbShapePtr(s) - @g^.shapes [0];
+end;
+
+function XkbKeyShape (g : PXkbGeometryPtr; k : PXkbKeyPtr) : PXkbShapeDoodadPtr;
+begin
+{#define XkbKeyShape(g,k) (&(g)->shapes[(k)->shape_ndx])}
+ Result := PXkbShapeDoodadPtr(@g^.shapes [k^.shape_ndx]);
+end;
+
+function XkbKeyColor (g : PXkbGeometryPtr; k : PXkbKeyPtr) : PXkbColorPtr;
+begin
+{#define XkbKeyColor(g,k) (&(g)->colors[(k)->color_ndx])}
+ Result := @g^.colors [k^.color_ndx];
+end;
+
+procedure XkbSetKeyShape (g : PXkbGeometryPtr; k : PXkbKeyPtr; s : PXkbShapeDoodadPtr);
+begin
+{#define XkbSetKeyShape(g,k,s) ((k)->shape_ndx= (s)-&(g)->shapes[0])}
+ k^.shape_ndx := PXkbShapePtr(s) - @g^.shapes [0];
+end;
+
+procedure XkbSetKeyColor (g : PXkbGeometryPtr; k : PXkbKeyPtr; c : PXkbColorPtr);
+begin
+{#define XkbSetKeyColor(g,k,c) ((k)->color_ndx= (c)-&(g)->colors[0])}
+ k^.color_ndx := c - @g^.colors [0];
+end;
+
+function XkbGeomColorIndex (g : PXkbGeometryPtr; c : PXkbColorPtr) : longint;
+begin
+{#define XkbGeomColorIndex(g,c) ((int)((c)-&(g)->colors[0]))}
+ Result := longint (c - @g^.colors [0]);
+end;
+(******************************** end of xkbgeom *******************************)
+
+end.
diff --git a/packages/x11/src/xkblib.pp b/packages/x11/src/xkblib.pp
new file mode 100644
index 0000000000..5481f77ac0
--- /dev/null
+++ b/packages/x11/src/xkblib.pp
@@ -0,0 +1,827 @@
+{ $Xorg: XKBlib.h,v 1.6 2000/08/17 19:45:03 cpqbld Exp $
+************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+ $XFree86: xc/lib/X11/XKBlib.h,v 3.3 2001/08/01 00:44:38 tsi Exp $
+
+ Pascal Convertion was made by Ido Kannner - kanerido@actcom.net.il
+
+Thanks:
+ I want to thanks to oliebol for putting up with all of the problems that was found
+ while translating this code. ;)
+
+ I want to thanks #fpc channel in freenode irc, for helping me, and to put up with my
+ wierd questions ;)
+
+ Thanks for mmc in #xlib on freenode irc And so for the channel itself for the helping me to
+ understanding some of the problems I had converting this headers and pointing me to resources
+ that helped translating this headers.
+
+ Ido
+
+History:
+ 2004/10/15 - Fixed a bug of accessing second based records by removing "paced record" and
+ chnaged it to "reocrd" only.
+ 2004/10/10 - Added to TXkbGetAtomNameFunc and TXkbInternAtomFunc the cdecl call.
+ 2004/10/06 - 09 - Convertion from the c header of XKBlib.h
+
+}
+{$PACKRECORDS C}
+{$MODE OBJFPC} {$MACRO ON} {$DEFINE MACRO}
+
+unit xkblib;
+
+interface
+uses X, Xlib, XKB;
+
+type
+ PXkbAnyEvent = ^TXkbAnyEvent;
+ TXkbAnyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // # of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds;
+ xkb_type : Smallint; // XKB event minor code
+ device : Word; // device ID
+ end;
+
+type
+ PXkbNewKeyboardNotifyEvent = ^TXkbNewKeyboardNotifyEvent;
+ TXkbNewKeyboardNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbNewKeyboardNotify
+ device : Smallint; // device ID
+ old_device : Smallint; // device ID of previous keyboard
+ min_key_code : Smallint; // minimum key code
+ max_key_code : Smallint; // maximum key code
+ old_min_key_code : Smallint; // min key code of previous kbd
+ old_max_key_code : Smallint; // max key code of previous kbd
+ changed : Word; // changed aspects of the keyboard
+ req_major : Shortint; // major and minor opcode of req
+ req_minor : Shortint; // that caused change, if applicable
+ end;
+
+type
+ PXkbMapNotifyEvent = ^TXkbMapNotifyEvent;
+ TXkbMapNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbMapNotify
+ device : Smallint; // device ID
+ changed : Word; // fields which have been changed
+ flags : Word; // reserved
+ first_type : Smallint; // first changed key type
+ num_types : Smallint; // number of changed key types
+ min_key_code : TKeyCode;
+ max_key_code : TKeyCode;
+ first_key_sym : TKeyCode;
+ first_key_act : TKeyCode;
+ first_key_behavior : TKeyCode;
+ first_key_explicit : TKeyCode;
+ first_modmap_key : TKeyCode;
+ first_vmodmap_key : TKeyCode;
+ num_key_syms : Smallint;
+ num_key_acts : Smallint;
+ num_key_behaviors : Smallint;
+ num_key_explicit : Smallint;
+ num_modmap_keys : Smallint;
+ num_vmodmap_keys : Smallint;
+ vmods : Word; // mask of changed virtual mods
+ end;
+
+type
+ PXkbStateNotifyEvent = ^TXkbStateNotifyEvent;
+ TXkbStateNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // # of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbStateNotify
+ device : Smallint; // device ID
+ changed : Word; // mask of changed state components
+ group : Smallint; // keyboard group
+ base_group : Smallint; // base keyboard group
+ latched_group : Smallint; // latched keyboard group
+ locked_group : Smallint; // locked keyboard group
+ mods : Word; // modifier state
+ base_mods : Word; // base modifier state
+ latched_mods : Word; // latched modifiers
+ locked_mods : Word; // locked modifiers
+ compat_state : Smallint; // compatibility state
+ grab_mods : Byte; // mods used for grabs
+ compat_grab_mods : Byte; // grab mods for non-XKB clients
+ lookup_mods : Byte; // mods sent to clients
+ compat_lookup_mods : Byte; // mods sent to non-XKB clients
+ ptr_buttons : Smallint; // pointer button state
+ keycode : TKeyCode; // keycode that caused the change
+ event_type : Shortint; // KeyPress or KeyRelease
+ req_major : Shortint; // Major opcode of request
+ req_minor : Shortint; // Minor opcode of request
+ end;
+type
+ PXkbControlsNotifyEvent = ^TXkbControlsNotifyEvent;
+ TXkbControlsNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbControlsNotify
+ device : Smallint; // device ID
+ changed_ctrls : Word; // controls with changed sub-values
+ enabled_ctrls : Word; // controls currently enabled
+ enabled_ctrl_changes : Word; // controls just {en,dis}abled
+ num_groups : Smallint; // total groups on keyboard
+ keycode : TKeyCode; // key that caused change or 0
+ event_type : Byte; // type of event that caused change
+ req_major : Byte; // if keycode==0, major and minor
+ req_minor : Byte; // opcode of req that caused change
+ end;
+
+type
+ PXkbIndicatorNotifyEvent = ^TXkbIndicatorNotifyEvent;
+ TXkbIndicatorNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbIndicatorNotify
+ device : Smallint; // device
+ changed : Word; // indicators with new state or map
+ state : Word; // current state of all indicators
+ end;
+
+type
+ PXkbNamesNotifyEvent = ^TXkbNamesNotifyEvent;
+ TXkbNamesNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbNamesNotify
+ device : Smallint; // device ID
+ changed : Longword; // names that have changed
+ first_type : Smallint; // first key type with new name
+ num_types : Smallint; // number of key types with new names
+ first_lvl : Smallint; // first key type new new level names
+ num_lvls : Smallint; // # of key types w/new level names
+ num_aliases : Smallint; // total number of key aliases
+ num_radio_groups : Smallint; // total number of radio groups
+ changed_vmods : Word; // virtual modifiers with new names
+ changed_groups : Word; // groups with new names
+ changed_indicators : Word; // indicators with new names
+ first_key : Smallint; // first key with new name
+ num_keys : Smallint; // number of keys with new names
+ end;
+
+type
+ PXkbCompatMapNotifyEvent = ^TXkbCompatMapNotifyEvent;
+ TXkbCompatMapNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbCompatMapNotify
+ device : Smallint; // device ID
+ changed_groups : Word; // groups with new compat maps
+ first_si : Smallint; // first new symbol interp
+ num_si : Smallint; // number of new symbol interps
+ num_total_si : Smallint; // total # of symbol interps
+ end;
+
+type
+ PXkbBellNotifyEvent = ^TXkbBellNotifyEvent;
+ TXkbBellNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbBellNotify
+ device : Smallint; // device ID
+ percent : Smallint; // requested volume as a % of maximum
+ pitch : Smallint; // requested pitch in Hz
+ duration : Smallint; // requested duration in useconds
+ bell_class : Smallint; // (input extension) feedback class
+ bell_id : Smallint; // (input extension) ID of feedback
+ name : TAtom; // "name" of requested bell
+ window : TWindow; // window associated with event
+ event_only : Boolean; // "event only" requested
+ end;
+
+type
+ PXkbActionMessageEvent = ^TXkbActionMessageEvent;
+ TXkbActionMessageEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbActionMessage
+ device : Smallint; // device ID
+ keycode : TKeyCode; // key that generated the event
+ press : Boolean; // true if act caused by key press
+ key_event_follows : Boolean; // true if key event also generated
+ group : Smallint; // effective group
+ mods : Word; // effective mods
+ message : array [0..XkbActionMessageLength] of Char;
+ // message -- leave space for NUL
+ end;
+
+type
+ PXkbAccessXNotifyEvent = ^TXkbAccessXNotifyEvent;
+ TXkbAccessXNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbAccessXNotify
+ device : Smallint; // device ID
+ detail : Smallint; // XkbAXN_*
+ keycode : Smallint; // key of event
+ sk_delay : Smallint; // current slow keys delay
+ debounce_delay : Smallint; // current debounce delay
+ end;
+
+type
+ PXkbExtensionDeviceNotifyEvent = ^TXkbExtensionDeviceNotifyEvent;
+ TXkbExtensionDeviceNotifyEvent = record
+ _type : Smallint; // XkbAnyEvent
+ serial : Longword; // of last req processed by server
+ send_event : Boolean; // is this from a SendEvent request?
+ display : PDisplay; // Display the event was read from
+ time : TTime; // milliseconds
+ xkb_type : Smallint; // XkbExtensionDeviceNotify
+ device : Smallint; // device ID
+ reason : Word; // reason for the event
+ supported : Word; // mask of supported features
+ unsupported : Word; // mask of unsupported features
+ // that some app tried to use
+ first_btn : Smallint; // first button that changed
+ num_btns : Smallint; // range of buttons changed
+ leds_defined : Word; // indicators with names or maps
+ led_state : Word; // current state of the indicators
+ led_class : Smallint; // feedback class for led changes
+ led_id : Smallint; // feedback id for led changes
+ end;
+
+type
+ PXkbEvent = ^TXkbEvent;
+ TXkbEvent = record
+ _type : Smallint;
+ any : TXkbAnyEvent;
+ new_kbd : TXkbNewKeyboardNotifyEvent;
+ map : TXkbMapNotifyEvent;
+ state : TXkbStateNotifyEvent;
+ ctrls : TXkbControlsNotifyEvent;
+ indicators : TXkbIndicatorNotifyEvent;
+ names : TXkbNamesNotifyEvent;
+ compat : TXkbCompatMapNotifyEvent;
+ bell : TXkbBellNotifyEvent;
+ message : TXkbActionMessageEvent;
+ accessx : TXkbAccessXNotifyEvent;
+ device : TXkbExtensionDeviceNotifyEvent;
+ core : TXEvent;
+ end;
+
+type
+//typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
+ PXkbKbdDpyStatePtr = ^TXkbKbdDpyStateRec;
+ TXkbKbdDpyStateRec = record
+ end;
+
+ { XkbOpenDisplay error codes }
+const
+ XkbOD_Success = 0;
+ XkbOD_BadLibraryVersion = 1;
+ XkbOD_ConnectionRefused = 2;
+ XkbOD_NonXkbServer = 3;
+ XkbOD_BadServerVersion = 4;
+
+ { Values for XlibFlags }
+const
+ XkbLC_ForceLatin1Lookup = 1 shl 0;
+ XkbLC_ConsumeLookupMods = 1 shl 1;
+ XkbLC_AlwaysConsumeShiftAndLock = 1 shl 2;
+ XkbLC_IgnoreNewKeyboards = 1 shl 3;
+ XkbLC_ControlFallback = 1 shl 4;
+ XkbLC_ConsumeKeysOnComposeFail = 1 shl 29;
+ XkbLC_ComposeLED = 1 shl 30;
+ XkbLC_BeepOnComposeFail = 1 shl 31;
+
+ XkbLC_AllComposeControls = $C0000000;
+ XkbLC_AllControls = $C000001F;
+
+function XkbIgnoreExtension (ignore : Boolean) : Boolean;
+ cdecl; external libX11 name 'XkbIgnoreExtension';
+
+function XkbOpenDisplay (name : PChar; ev_rtrn, err_rtrn,
+ major_rtrn, minor_rtrn, reason : PSmallint) : PDisplay;
+ cdecl; external libX11 name 'XkbOpenDisplay';
+
+function XkbQueryExtension (dpy : PDisplay; opcodeReturn, eventBaseReturn,
+ errorBaseReturn, majorRtrn, minorRtrn: PSmallint) : Boolean;
+ cdecl; external libX11 name 'XkbQueryExtension';
+
+function XkbUseExtension (dpy : PDisplay; major_rtrn, minor_rtrn : PSmallint) : Boolean;
+ cdecl; external libX11 name 'XkbUseExtension';
+
+function XkbLibraryVersion (libMajorRtrn, libMinorRtrn : PSmallint) : Boolean;
+ cdecl; external libX11 name 'XkbLibraryVersion';
+
+function XkbSetXlibControls (dpy : PDisplay; affect, values : Word) : Word;
+ cdecl; external libX11 name 'XkbSetXlibControls';
+
+function XkbGetXlibControls (dpy : PDisplay) : Word;
+ cdecl; external libX11 name 'XkbGetXlibControls';
+
+type
+ TXkbInternAtomFunc = function (dpy : PDisplay; name : PChar; only_if_exists : Boolean) : TAtom; cdecl;
+
+type
+ TXkbGetAtomNameFunc = function (dpy : PDisplay; atom : TAtom) : PChar; cdecl;
+
+procedure XkbSetAtomFuncs (getAtom : TXkbInternAtomFunc; getName : TXkbGetAtomNameFunc);
+ cdecl; external libX11 name 'XkbSetAtomFuncs';
+
+function XkbKeycodeToKeysym (dpy : PDisplay;
+ {$IFDEF NeedWidePrototypes}
+ kc : Word;
+ {$ELSE}
+ kc : TKeyCode;
+ {$ENDIF}
+ group, level : Smallint) : TKeySym;
+ cdecl; external libX11 name 'XkbKeycodeToKeysym';
+
+function XkbKeysymToModifiers (dpy : PDisplay; ks : TKeySym) : Word;
+ cdecl; external libX11 name 'XkbKeysymToModifiers';
+
+function XkbLookupKeySym (dpy : PDisplay; keycode : TKeyCode; modifiers,
+ modifiers_return : Word; keysym_return : PKeySym) : Boolean;
+ cdecl; external libX11 name 'XkbLookupKeySym';
+
+function XkbLookupKeyBinding (dpy : PDisplay; sym_rtrn : TKeySym; mods : Word;
+ buffer : PChar; nbytes : Smallint; extra_rtrn : PSmallint) : Smallint;
+ cdecl; external libX11 name 'XkbLookupKeyBinding';
+
+function XkbTranslateKeyCode (xkb : PXkbDescPtr; keycode : TKeyCode; modifiers,
+ modifiers_return : Word; keysym_return : PKeySym) : Boolean;
+ cdecl; external libX11 name 'XkbTranslateKeyCode';
+
+function XkbTranslateKeySym (dpy : PDisplay; sym_return : TKeySym; modifiers : Word;
+ buffer : PChar; nbytes : Smallint; extra_rtrn : PSmallint) : Smallint;
+ cdecl; external libX11 name 'XkbTranslateKeySym';
+
+function XkbSetAutoRepeatRate (dpy : PDisplay; deviceSpec, delay, interval : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetAutoRepeatRate';
+
+function XkbGetAutoRepeatRate (dpy : PDisplay; deviceSpec : Word; delayRtrn, intervalRtrn : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbGetAutoRepeatRate';
+
+function XkbChangeEnabledControls (dpy : PDisplay; deviceSpec, affect, values : Word) : Boolean;
+ cdecl; external libX11 name 'XkbChangeEnabledControls';
+
+function XkbDeviceBell (dpy : PDisplay; win : TWindow; deviceSpec,
+ bellClass, bellID, percent : Smallint; name : TAtom) : Boolean;
+ cdecl; external libX11 name 'XkbDeviceBell';
+
+function XkbForceDeviceBell (dpy : PDisplay; deviceSpec, bellClass, bellID, percent : Smallint) : Boolean;
+ cdecl; external libX11 name 'XkbForceDeviceBell';
+
+function XkbDeviceBellEvent (dpy : PDisplay; win : TWindow; deviceSpec,
+ bellClass, bellID, percent : Smallint; name : TAtom) : Boolean;
+ cdecl; external libX11 name 'XkbDeviceBellEvent';
+
+function XkbBell (dpy : PDisplay; win : TWindow; percent : Smallint; name : TAtom) : Boolean;
+ cdecl; external libX11 name 'XkbBell';
+
+function XkbForceBell (dpy : PDisplay; percent : Smallint) : Boolean;
+ cdecl; external libX11 name 'XkbForceBell';
+
+function XkbBellEvent (dpy : PDisplay; win : TWindow; percent : Smallint; name : TAtom) : Boolean;
+ cdecl; external libX11 name 'XkbBellEvent';
+
+function XkbSelectEvents (dpy : PDisplay; deviceID, affect, values : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSelectEvents';
+
+function XkbSelectEventDetails (dpy : PDisplay; deviceID, eventType : Word;
+ affect, details : Longword) : Boolean;
+ cdecl; external libX11 name 'XkbSelectEventDetails';
+
+procedure XkbNoteMapChanges (old : PXkbMapChangesPtr; new : PXkbMapNotifyEvent; wanted : Word);
+ cdecl; external libX11 name 'XkbNoteMapChanges';
+
+procedure XkbNoteNameChanges (old : PXkbNameChangesPtr; new : PXkbNamesNotifyEvent; wanted : Word);
+ cdecl; external libX11 name 'XkbNoteNameChanges';
+
+function XkbGetIndicatorState (dpy : PDisplay; deviceSpec : Word; pStateRtrn : PWord) : TStatus;
+ cdecl; external libX11 name 'XkbGetIndicatorState';
+
+function XkbGetDeviceIndicatorState (dpy : PDisplay; deviceSpec, ledClass,
+ ledID : Word; pStateRtrn : PWord) : TStatus;
+ cdecl; external libX11 name 'XkbGetDeviceIndicatorState';
+
+function XkbGetIndicatorMap (dpy : PDisplay; which : Longword; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetIndicatorMap';
+
+function XkbSetIndicatorMap (dpy : PDisplay; which : Longword; desc : PXkbDescPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetIndicatorMap';
+
+procedure XkbNoteIndicatorMapChanges (o, n : PXkbIndicatorChangesPtr; w : Word);
+procedure XkbNoteIndicatorStateChanges (o, n : PXkbIndicatorChangesPtr; w : Word);
+
+function XkbGetIndicatorMapChanges (d : PDisplay; x : PXkbDescPtr;
+ c : PXkbIndicatorChangesPtr) : TStatus;
+
+function XkbChangeIndicatorMaps (d : PDisplay; x : PXkbDescPtr;
+ c : PXkbIndicatorChangesPtr) : Boolean;
+
+function XkbGetNamedIndicator (dpy : PDisplay; name : TAtom; pNdxRtrn : PSmallint;
+ pStateRtrn : PBoolean; pMapRtrn : PXkbIndicatorMapPtr;
+ pRealRtrn : PBoolean) : Boolean;
+ cdecl; external libX11 name 'XkbGetNamedIndicator';
+
+function XkbGetNamedDeviceIndicator (dpy : PDisplay; deviceSpec, ledClass, ledID : Word;
+ name : TAtom; pNdxRtrn : PSmallint; pStateRtrn : PBoolean;
+ pMapRtrn : PXkbIndicatorMapPtr; pRealRtrn : PBoolean) : Boolean;
+ cdecl; external libX11 name 'XkbGetNamedDeviceIndicator';
+
+function XkbSetNamedIndicator (dpy : PDisplay; name : TAtom; changeState,
+ state, createNewMap : Boolean; pMap : PXkbIndicatorMapPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetNamedIndicator';
+
+function XkbSetNamedDeviceIndicator (dpy : PDisplay; deviceSpec, ledClass, ledID : Word;
+ name : TAtom; changeState, state, createNewMap : Boolean;
+ pMap : PXkbIndicatorMapPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetNamedDeviceIndicator';
+
+function XkbLockModifiers (dpy : PDisplay; deviceSpec, affect, values : Word) : Boolean;
+ cdecl; external libX11 name 'XkbLockModifiers';
+
+function XkbLatchModifiers (dpy : PDisplay; deviceSpec, affect, values : Word) : Boolean;
+ cdecl; external libX11 name 'XkbLatchModifiers';
+
+function XkbLockGroup (dpy : PDisplay; deviceSpec, group : Word) : Boolean;
+ cdecl; external libX11 name 'XkbLockGroup';
+
+function XkbLatchGroup (dpy : PDisplay; deviceSpec, group : Word) : Boolean;
+ cdecl; external libX11 name 'XkbLatchGroup';
+
+function XkbSetServerInternalMods (dpy : PDisplay; deviceSpec, affectReal,
+ realValues, affectVirtual, virtualValues : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetServerInternalMods';
+
+function XkbSetIgnoreLockMods (dpy : PDisplay; deviceSpec, affectReal,
+ realValues, affectVirtual, virtualValues : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetIgnoreLockMods';
+
+function XkbVirtualModsToReal (dpy : PDisplay; virtual_mask : Word; mask_rtrn : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbVirtualModsToReal';
+
+function XkbComputeEffectiveMap (xkb : PXkbDescPtr; _type : PXkbKeyTypePtr; map_rtrn : PByte) : Boolean;
+ cdecl; external libX11 name 'XkbComputeEffectiveMap';
+
+function XkbInitCanonicalKeyTypes (xkb : PXkbDescPtr; which : Word; keypadVMod : Smallint) : TStatus;
+ cdecl; external libX11 name 'XkbInitCanonicalKeyTypes';
+
+function XkbAllocKeyboard : PXkbDescPtr;
+ cdecl; external libX11 name 'XkbAllocKeyboard';
+
+procedure XkbFreeKeyboard (xkb : PXkbDescPtr; which : Word; freeDesc : Boolean);
+ cdecl; external libX11 name 'XkbFreeKeyboard';
+
+function XkbAllocClientMap (xkb : PXkbDescPtr; which, nTypes : Word) : TStatus;
+ cdecl; external libX11 name 'XkbAllocClientMap';
+
+function XkbAllocServerMap (xkb : PXkbDescPtr; which, nActions : Word) : TStatus;
+ cdecl; external libX11 name 'XkbAllocServerMap';
+
+procedure XkbFreeClientMap (xkb : PXkbDescPtr; what : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeClientMap';
+
+procedure XkbFreeServerMap (xkb : PXkbDescPtr; what : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeServerMap';
+
+function XkbAddKeyType (xkb : PXkbDescPtr; name : TAtom; map_count : Smallint;
+ want_preserve : Boolean; num_lvls : Smallint) : PXkbKeyTypePtr;
+ cdecl; external libX11 name 'XkbAddKeyType';
+
+function XkbAllocIndicatorMaps (xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbAllocIndicatorMaps';
+
+procedure XkbFreeIndicatorMaps (xkb : PXkbDescPtr);
+ cdecl; external libX11 name 'XkbFreeIndicatorMaps';
+
+function XkbGetMap (dpy : PDisplay; which, deviceSpec : Word) : PXkbDescPtr;
+ cdecl; external libX11 name 'XkbGetMap';
+
+function XkbGetUpdatedMap (dpy : PDisplay; which : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetUpdatedMap';
+
+function XkbGetMapChanges (dpy : PDisplay; xkb : PXkbDescPtr; changes : PXkbMapChangesPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetMapChanges';
+
+function XkbRefreshKeyboardMapping (event : PXkbMapNotifyEvent) : TStatus;
+ cdecl; external libX11 name 'XkbRefreshKeyboardMapping';
+
+function XkbGetKeyTypes (dpy : PDisplay; first, num : Word; xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeyTypes';
+
+function XkbGetKeySyms (dpy : PDisplay; first, num : Word; xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeySyms';
+
+function XkbGetKeyActions (dpy : PDisplay; first, num : Word; xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeyActions';
+
+function XkbGetKeyBehaviors (dpy : PDisplay; firstKey, nKeys : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeyBehaviors';
+
+function XkbGetVirtualMods (dpy : PDisplay; which : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetVirtualMods';
+
+function XkbGetKeyExplicitComponents (dpy : PDisplay; firstKey, nKeys : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeyExplicitComponents';
+
+function XkbGetKeyModifierMap (dpy : PDisplay; firstKey, nKeys : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetKeyModifierMap';
+
+function XkbAllocControls (xkb : PXkbDescPtr; which : Word) : TStatus;
+ cdecl; external libX11 name 'XkbAllocControls';
+
+procedure XkbFreeControls (xkb : PXkbDescPtr; which : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeControls';
+
+function XkbGetControls (dpy : PDisplay; which : Longword; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetControls';
+
+function XkbSetControls (dpy : PDisplay; which : Longword; desc : PXkbDescPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetControls';
+
+procedure XkbNoteControlsChanges (old : PXkbControlsChangesPtr; new : PXkbControlsNotifyEvent;
+ wanted : Word);
+ cdecl; external libX11 name 'XkbNoteControlsChanges';
+
+function XkbGetControlsChanges (d : PDisplay; x : PXkbDescPtr; c : PXkbControlsChangesPtr) : TStatus;
+function XkbChangeControls (d : PDisplay; x : PXkbDescPtr; c : PXkbControlsChangesPtr) : Boolean;
+
+function XkbAllocCompatMap (xkb : PXkbDescPtr; which, nInterpret : Word) : TStatus;
+ cdecl; external libX11 name 'XkbAllocCompatMap';
+
+procedure XkbFreeCompatMap (xkib : PXkbDescPtr; which : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeCompatMap';
+
+function XkbGetCompatMap (dpy : PDisplay; which : Word; xkb : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetCompatMap';
+
+function XkbSetCompatMap (dpy : PDisplay; which : Word;
+ xkb : PXkbDescPtr; updateActions : Boolean) : Boolean;
+ cdecl; external libX11 name 'XkbSetCompatMap';
+
+function XkbAddSymInterpret (xkb : PXkbDescPtr; si : PXkbSymInterpretPtr;
+ updateMap : Boolean; changes : PXkbChangesPtr) : PXkbSymInterpretPtr;
+ cdecl; external libX11 name 'XkbAddSymInterpret';
+
+function XkbAllocNames (xkb : PXkbDescPtr; which : Word; nTotalRG, nTotalAliases : Smallint) : TStatus;
+ cdecl; external libX11 name 'XkbAllocNames';
+
+function XkbGetNames (dpy : PDisplay; which : Word; desc : PXkbDescPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetNames';
+
+function XkbSetNames (dpy : PDisplay; which, firstType, nTypes : Word; desc : PXkbDescPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetNames';
+
+function XkbChangeNames (dpy : PDisplay; xkb : PXkbDescPtr; changes : PXkbNameChangesPtr) : Boolean;
+ cdecl; external libX11 name 'XkbChangeNames';
+
+procedure XkbFreeNames (xkb : PXkbDescPtr; which : Word; freeMap : Boolean);
+ cdecl; external libX11 name 'XkbFreeNames';
+
+function XkbGetState(dpy : PDisplay; deviceSpec : Word; rtrnState : PXkbStatePtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetState';
+
+function XkbSetMap (dpy : PDisplay; which : Word; desc : PXkbDescPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetMap';
+
+function XkbChangeMap (dpy : PDisplay; desc : PXkbDescPtr; changes : PXkbMapChangesPtr) : Boolean;
+ cdecl; external libX11 name 'XkbChangeMap';
+
+function XkbSetDetectableAutoRepeat (dpy : PDisplay; detectable : Boolean; supported : PBoolean) : Boolean;
+ cdecl; external libX11 name 'XkbSetDetectableAutoRepeat';
+
+function XkbGetDetectableAutoRepeat (dpy : PDisplay; supported : PBoolean) : Boolean;
+ cdecl; external libX11 name 'XkbGetDetectableAutoRepeat';
+
+function XkbSetAutoResetControls (dpy : PDisplay; changes : Word;
+ auto_ctrls, auto_values : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbSetAutoResetControls';
+
+function XkbGetAutoResetControls (dpy : PDisplay; auto_ctrls, auto_ctrl_values : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbGetAutoResetControls';
+
+function XkbSetPerClientControls (dpy : PDisplay; change : Word; values : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbSetPerClientControls';
+
+function XkbGetPerClientControls (dpy : PDisplay; ctrls : PWord) : Boolean;
+ cdecl; external libX11 name 'XkbGetPerClientControls';
+
+function XkbCopyKeyType (from, into : PXkbKeyTypePtr) : TStatus;
+ cdecl; external libX11 name 'XkbCopyKeyType';
+
+function XkbCopyKeyTypes (from, into : PXkbKeyTypePtr; num_types : Smallint) : TStatus;
+ cdecl; external libX11 name 'XkbCopyKeyTypes';
+
+function XkbResizeKeyType (xkb : PXkbDescPtr; type_ndx, map_count : Smallint;
+ want_preserve : Boolean; new_num_lvls : Smallint) : TStatus;
+ cdecl; external libX11 name 'XkbResizeKeyType';
+
+function XkbResizeKeySyms (desc : PXkbDescPtr; forKey, symsNeeded : Smallint) : PKeySym;
+ cdecl; external libX11 name 'XkbResizeKeySyms';
+
+function XkbResizeKeyActions (desc : PXkbDescPtr; forKey, actsNeeded : Smallint) : PXkbAction;
+ cdecl; external libX11 name 'XkbResizeKeyActions';
+
+function XkbChangeTypesOfKey (xkb : PXkbDescPtr; key, num_groups : Smallint;
+ groups : Word; newTypes : PSmallint; pChanges : PXkbMapChangesPtr) : TStatus;
+ cdecl; external libX11 name 'XkbChangeTypesOfKey';
+
+(***====================================================================***)
+
+function XkbListComponents (dpy : PDisplay; deviceSpec : Word;
+ ptrns : PXkbComponentNamesPtr; max_inout : PSmallint) : PXkbComponentListPtr;
+ cdecl; external libX11 name 'XkbListComponents';
+
+procedure XkbFreeComponentList (list : PXkbComponentListPtr);
+ cdecl; external libX11 name 'XkbFreeComponentList';
+
+function XkbGetKeyboard (dpy : PDisplay; which, deviceSpec : Word) : PXkbDescPtr;
+ cdecl; external libX11 name 'XkbGetKeyboard';
+
+function XkbGetKeyboardByName (dpy : PDisplay; deviceSpec : Word; names : PXkbComponentNamesPtr;
+ want, need : Word; load : Boolean) : PXkbDescPtr;
+ cdecl; external libX11 name 'XkbGetKeyboardByName';
+
+(***====================================================================***)
+
+function XkbKeyTypesForCoreSymbols ( // returns # of groups
+ xkb : PXkbDescPtr; // keyboard device
+ map_width : Smallint; // keyboard device
+ core_syms : PKeySym; // always mapWidth symbols
+ protected : Word; // explicit key types
+ types_inout : PSmallint; // always four type indices
+ xkb_syms_rtrn : PKeySym // must have enough space
+ ) : Smallint;
+ cdecl; external libX11 name 'XkbKeyTypesForCoreSymbols';
+
+function XkbApplyCompatMapToKey ( // False only on error
+ xkb : PXkbDescPtr; // keymap to be edited
+ key : TKeyCode; // key to be updated
+ changes : PXkbChangesPtr // resulting changes to map
+ ) : Boolean;
+ cdecl; external libX11 name 'XkbApplyCompatMapToKey';
+
+function XkbUpdateMapFromCore ( //False only on error
+ xkb : PXkbDescPtr; // XKB keyboard to be edited
+ first_key : TKeyCode; // first changed key
+ num_keys, // number of changed keys
+ map_width : Smallint; // width of core keymap
+ core_keysyms : PKeySym; // symbols from core keymap
+ changes : PXkbChangesPtr // resulting changes
+ ) : Boolean;
+ cdecl; external libX11 name 'XkbUpdateMapFromCore';
+
+(***====================================================================***)
+
+function XkbAddDeviceLedInfo (devi : PXkbDeviceInfoPtr; ledClass, ledId : Word) : PXkbDeviceLedInfoPtr;
+ cdecl; external libX11 name 'XkbAddDeviceLedInfo';
+
+function XkbResizeDeviceButtonActions (devi : PXkbDeviceInfoPtr; newTotal : Word) : TStatus;
+ cdecl; external libX11 name 'XkbResizeDeviceButtonActions';
+
+function XkbAllocDeviceInfo (deviceSpec, nButtons, szLeds : Word) : PXkbDeviceInfoPtr;
+ cdecl; external libX11 name 'XkbAllocDeviceInfo';
+
+procedure XkbFreeDeviceInfo (devi : PXkbDeviceInfoPtr; which : Word; freeDevI : Boolean);
+ cdecl; external libX11 name 'XkbFreeDeviceInfo';
+
+procedure XkbNoteDeviceChanges (old : PXkbDeviceChangesPtr; new : PXkbExtensionDeviceNotifyEvent;
+ wanted : Word);
+ cdecl; external libX11 name 'XkbNoteDeviceChanges';
+
+function XkbGetDeviceInfo (dpy : PDisplay; which, deviceSpec, ledClass, ledID : Word) : PXkbDeviceInfoPtr;
+ cdecl; external libX11 name 'XkbGetDeviceInfo';
+
+function XkbGetDeviceInfoChanges (dpy : PDisplay; devi : PXkbDeviceInfoPtr;
+ changes : PXkbDeviceChangesPtr) : TStatus;
+ cdecl; external libX11 name 'XkbGetDeviceInfoChanges';
+
+function XkbGetDeviceButtonActions (dpy : PDisplay; devi : PXkbDeviceInfoPtr; all : Boolean;
+ first, nBtns : Word) : TStatus;
+ cdecl; external libX11 name 'XkbGetDeviceButtonActions';
+
+function XkbGetDeviceLedInfo (dpy : PDisplay; devi : PXkbDeviceInfoPtr;
+ ledClass, ledId, which : Word) : TStatus;
+ cdecl; external libX11 name 'XkbGetDeviceLedInfo';
+
+function XkbSetDeviceInfo (dpy : PDisplay; which : Word; devi : PXkbDeviceInfoPtr) : Boolean;
+ cdecl; external libX11 name 'XkbSetDeviceInfo';
+
+function XkbChangeDeviceInfo (dpy : PDisplay; desc : PXkbDeviceInfoPtr;
+ changes : PXkbDeviceChangesPtr) : Boolean;
+ cdecl; external libX11 name 'XkbChangeDeviceInfo';
+
+function XkbSetDeviceLedInfo (dpy : PDisplay; devi : PXkbDeviceInfoPtr;
+ ledClass, ledID, which : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetDeviceLedInfo';
+
+function XkbSetDeviceButtonActions (dpy : PDisplay; devi : PXkbDeviceInfoPtr;
+ first, nBtns : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetDeviceButtonActions';
+
+(***====================================================================***)
+
+function XkbToControl (c : Byte) : Byte;
+ cdecl; external libX11 name 'XkbToControl';
+
+(***====================================================================***)
+
+function XkbSetDebuggingFlags (dpy : PDisplay; mask, flags : Word; msg : PChar;
+ ctrls_mask, ctrls, rtrn_flags, rtrn_ctrls : Word) : Boolean;
+ cdecl; external libX11 name 'XkbSetDebuggingFlags';
+
+function XkbApplyVirtualModChanges (xkb : PXkbDescPtr; changed : Word; changes : PXkbChangesPtr) : Boolean;
+ cdecl; external libX11 name 'XkbApplyVirtualModChanges';
+
+implementation
+
+procedure XkbNoteIndicatorMapChanges (o, n : PXkbIndicatorChangesPtr; w : Word);
+begin
+{#define XkbNoteIndicatorMapChanges(o,n,w) ((o)->map_changes|=((n)->map_changes&(w)))}
+ o^.map_changes := o^.map_changes or (n^.map_changes and w);
+end;
+
+procedure XkbNoteIndicatorStateChanges (o, n : PXkbIndicatorChangesPtr; w : Word);
+begin
+{#define XkbNoteIndicatorStateChanges(o,n,w) ((o)->state_changes|=((n)->state_changes&(w)))}
+ o^.state_changes := o^.state_changes or (n^.state_changes and w);
+end;
+
+function XkbGetIndicatorMapChanges (d : PDisplay; x : PXkbDescPtr; c : PXkbIndicatorChangesPtr) : TStatus;
+begin
+{#define XkbGetIndicatorMapChanges(d,x,c) (XkbGetIndicatorMap((d),(c)->map_changes,x)}
+ Result := XkbGetIndicatorMap (d, c^.map_changes, x);
+end;
+
+function XkbChangeIndicatorMaps (d : PDisplay; x : PXkbDescPtr; c : PXkbIndicatorChangesPtr) : Boolean;
+begin
+{#define XkbChangeIndicatorMaps(d,x,c) (XkbSetIndicatorMap((d),(c)->map_changes,x))}
+ Result := XkbSetIndicatorMap (d, c^.map_changes, x);
+end;
+
+function XkbGetControlsChanges (d : PDisplay; x : PXkbDescPtr; c : PXkbControlsChangesPtr) : TStatus;
+begin
+{#define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)}
+ Result := XkbGetControls (d, c^.changed_ctrls, x);
+end;
+
+function XkbChangeControls (d : PDisplay; x : PXkbDescPtr; c : PXkbControlsChangesPtr) : Boolean;
+begin
+{#define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)}
+ Result := XkbSetControls (d, c^.changed_ctrls, x);
+end;
+
+end.
diff --git a/packages/x11/src/xlib.pp b/packages/x11/src/xlib.pp
new file mode 100644
index 0000000000..04b6837527
--- /dev/null
+++ b/packages/x11/src/xlib.pp
@@ -0,0 +1,2077 @@
+unit xlib;
+interface
+{$mode objfpc}
+uses
+ ctypes,x;
+{$define MACROS}
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+type
+ PPcint = ^Pcint;
+ PPcuchar = ^Pcuchar;
+{
+ Automatically converted by H2Pas 0.99.15 from xlib.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xlib.h
+}
+
+{$PACKRECORDS C}
+
+
+const
+ XlibSpecificationRelease = 6;
+type
+
+ PXPointer = ^TXPointer;
+ TXPointer = ^char;
+ PBool = ^TBool;
+ TBool = longbool; {cint?}
+ PStatus = ^TStatus;
+ TStatus = cint;
+
+const
+ QueuedAlready = 0;
+ QueuedAfterReading = 1;
+ QueuedAfterFlush = 2;
+
+type
+
+ PPXExtData = ^PXExtData;
+ PXExtData = ^TXExtData;
+ TXExtData = record
+ number : cint;
+ next : PXExtData;
+ free_private : function (extension:PXExtData):cint;cdecl;
+ private_data : TXPointer;
+ end;
+
+ PXExtCodes = ^TXExtCodes;
+ TXExtCodes = record
+ extension : cint;
+ major_opcode : cint;
+ first_event : cint;
+ first_error : cint;
+ end;
+
+ PXPixmapFormatValues = ^TXPixmapFormatValues;
+ TXPixmapFormatValues = record
+ depth : cint;
+ bits_per_pixel : cint;
+ scanline_pad : cint;
+ end;
+
+ PXGCValues = ^TXGCValues;
+ TXGCValues = record
+ _function : cint;
+ plane_mask : culong;
+ foreground : culong;
+ background : culong;
+ line_width : cint;
+ line_style : cint;
+ cap_style : cint;
+ join_style : cint;
+ fill_style : cint;
+ fill_rule : cint;
+ arc_mode : cint;
+ tile : TPixmap;
+ stipple : TPixmap;
+ ts_x_origin : cint;
+ ts_y_origin : cint;
+ font : TFont;
+ subwindow_mode : cint;
+ graphics_exposures : TBool;
+ clip_x_origin : cint;
+ clip_y_origin : cint;
+ clip_mask : TPixmap;
+ dash_offset : cint;
+ dashes : cchar;
+ end;
+
+ PXGC = ^TXGC;
+ TXGC = record
+ end;
+ TGC = PXGC;
+ PGC = ^TGC;
+
+ PVisual = ^TVisual;
+ TVisual = record
+ ext_data : PXExtData;
+ visualid : TVisualID;
+ c_class : cint;
+ red_mask, green_mask, blue_mask : culong;
+ bits_per_rgb : cint;
+ map_entries : cint;
+ end;
+
+ PDepth = ^TDepth;
+ TDepth = record
+ depth : cint;
+ nvisuals : cint;
+ visuals : PVisual;
+ end;
+ PXDisplay = ^TXDisplay;
+ TXDisplay = record
+ end;
+
+
+ PScreen = ^TScreen;
+ TScreen = record
+ ext_data : PXExtData;
+ display : PXDisplay;
+ root : TWindow;
+ width, height : cint;
+ mwidth, mheight : cint;
+ ndepths : cint;
+ depths : PDepth;
+ root_depth : cint;
+ root_visual : PVisual;
+ default_gc : TGC;
+ cmap : TColormap;
+ white_pixel : culong;
+ black_pixel : culong;
+ max_maps, min_maps : cint;
+ backing_store : cint;
+ save_unders : TBool;
+ root_input_mask : clong;
+ end;
+
+ PScreenFormat = ^TScreenFormat;
+ TScreenFormat = record
+ ext_data : PXExtData;
+ depth : cint;
+ bits_per_pixel : cint;
+ scanline_pad : cint;
+ end;
+
+ PXSetWindowAttributes = ^TXSetWindowAttributes;
+ TXSetWindowAttributes = record
+ background_pixmap : TPixmap;
+ background_pixel : culong;
+ border_pixmap : TPixmap;
+ border_pixel : culong;
+ bit_gravity : cint;
+ win_gravity : cint;
+ backing_store : cint;
+ backing_planes : culong;
+ backing_pixel : culong;
+ save_under : TBool;
+ event_mask : clong;
+ do_not_propagate_mask : clong;
+ override_redirect : TBool;
+ colormap : TColormap;
+ cursor : TCursor;
+ end;
+
+ PXWindowAttributes = ^TXWindowAttributes;
+ TXWindowAttributes = record
+ x, y : cint;
+ width, height : cint;
+ border_width : cint;
+ depth : cint;
+ visual : PVisual;
+ root : TWindow;
+ c_class : cint;
+ bit_gravity : cint;
+ win_gravity : cint;
+ backing_store : cint;
+ backing_planes : culong;
+ backing_pixel : culong;
+ save_under : TBool;
+ colormap : TColormap;
+ map_installed : TBool;
+ map_state : cint;
+ all_event_masks : clong;
+ your_event_mask : clong;
+ do_not_propagate_mask : clong;
+ override_redirect : TBool;
+ screen : PScreen;
+ end;
+
+ PXHostAddress = ^TXHostAddress;
+ TXHostAddress = record
+ family : cint;
+ length : cint;
+ address : Pchar;
+ end;
+
+ PXServerInterpretedAddress = ^TXServerInterpretedAddress;
+ TXServerInterpretedAddress = record
+ typelength : cint;
+ valuelength : cint;
+ _type : Pchar;
+ value : Pchar;
+ end;
+
+ PXImage = ^TXImage;
+ TXImage = record
+ width, height : cint;
+ xoffset : cint;
+ format : cint;
+ data : Pchar;
+ byte_order : cint;
+ bitmap_unit : cint;
+ bitmap_bit_order : cint;
+ bitmap_pad : cint;
+ depth : cint;
+ bytes_per_line : cint;
+ bits_per_pixel : cint;
+ red_mask : culong;
+ green_mask : culong;
+ blue_mask : culong;
+ obdata : TXPointer;
+ f : record
+ create_image : function (para1:PXDisplay; para2:PVisual; para3:cuint; para4:cint; para5:cint;
+ para6:Pchar; para7:cuint; para8:cuint; para9:cint; para10:cint):PXImage;cdecl;
+ destroy_image : function (para1:PXImage):cint;cdecl;
+ get_pixel : function (para1:PXImage; para2:cint; para3:cint):culong;cdecl;
+ put_pixel : function (para1:PXImage; para2:cint; para3:cint; para4:culong):cint;cdecl;
+ sub_image : function (para1:PXImage; para2:cint; para3:cint; para4:cuint; para5:cuint):PXImage;cdecl;
+ add_pixel : function (para1:PXImage; para2:clong):cint;cdecl;
+ end;
+ end;
+
+ PXWindowChanges = ^TXWindowChanges;
+ TXWindowChanges = record
+ x, y : cint;
+ width, height : cint;
+ border_width : cint;
+ sibling : TWindow;
+ stack_mode : cint;
+ end;
+
+ PXColor = ^TXColor;
+ TXColor = record
+ pixel : culong;
+ red, green, blue : cushort;
+ flags : cchar;
+ pad : cchar;
+ end;
+
+ PXSegment = ^TXSegment;
+ TXSegment = record
+ x1, y1, x2, y2 : cshort;
+ end;
+
+ PXPoint = ^TXPoint;
+ TXPoint = record
+ x, y : cshort;
+ end;
+
+ PXRectangle = ^TXRectangle;
+ TXRectangle = record
+ x, y : cshort;
+ width, height : cushort;
+ end;
+
+ PXArc = ^TXArc;
+ TXArc = record
+ x, y : cshort;
+ width, height : cushort;
+ angle1, angle2 : cshort;
+ end;
+
+ PXKeyboardControl = ^TXKeyboardControl;
+ TXKeyboardControl = record
+ key_click_percent : cint;
+ bell_percent : cint;
+ bell_pitch : cint;
+ bell_duration : cint;
+ led : cint;
+ led_mode : cint;
+ key : cint;
+ auto_repeat_mode : cint;
+ end;
+
+ PXKeyboardState = ^TXKeyboardState;
+ TXKeyboardState = record
+ key_click_percent : cint;
+ bell_percent : cint;
+ bell_pitch, bell_duration : cuint;
+ led_mask : culong;
+ global_auto_repeat : cint;
+ auto_repeats : array[0..31] of cchar;
+ end;
+
+ PXTimeCoord = ^TXTimeCoord;
+ TXTimeCoord = record
+ time : TTime;
+ x, y : cshort;
+ end;
+
+ PXModifierKeymap = ^TXModifierKeymap;
+ TXModifierKeymap = record
+ max_keypermod : cint;
+ modifiermap : PKeyCode;
+ end;
+
+ PDisplay = ^TDisplay;
+ TDisplay = TXDisplay;
+
+ PXPrivate = ^TXPrivate;
+ TXPrivate = record
+ end;
+
+ PXrmHashBucketRec = ^TXrmHashBucketRec;
+ TXrmHashBucketRec = record
+ end;
+
+
+ PXPrivDisplay = ^TXPrivDisplay;
+ TXPrivDisplay = record
+ ext_data : PXExtData;
+ private1 : PXPrivate;
+ fd : cint;
+ private2 : cint;
+ proto_major_version : cint;
+ proto_minor_version : cint;
+ vendor : Pchar;
+ private3 : TXID;
+ private4 : TXID;
+ private5 : TXID;
+ private6 : cint;
+ resource_alloc : function (para1:PXDisplay):TXID;cdecl;
+ byte_order : cint;
+ bitmap_unit : cint;
+ bitmap_pad : cint;
+ bitmap_bit_order : cint;
+ nformats : cint;
+ pixmap_format : PScreenFormat;
+ private8 : cint;
+ release : cint;
+ private9, private10 : PXPrivate;
+ qlen : cint;
+ last_request_read : culong;
+ request : culong;
+ private11 : TXPointer;
+ private12 : TXPointer;
+ private13 : TXPointer;
+ private14 : TXPointer;
+ max_request_size : cunsigned;
+ db : PXrmHashBucketRec;
+ private15 : function (para1:PXDisplay):cint;cdecl;
+ display_name : Pchar;
+ default_screen : cint;
+ nscreens : cint;
+ screens : PScreen;
+ motion_buffer : culong;
+ private16 : culong;
+ min_keycode : cint;
+ max_keycode : cint;
+ private17 : TXPointer;
+ private18 : TXPointer;
+ private19 : cint;
+ xdefaults : Pchar;
+ end;
+
+ PXKeyEvent = ^TXKeyEvent;
+ TXKeyEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ root : TWindow;
+ subwindow : TWindow;
+ time : TTime;
+ x, y : cint;
+ x_root, y_root : cint;
+ state : cuint;
+ keycode : cuint;
+ same_screen : TBool;
+ end;
+
+ PXKeyPressedEvent = ^TXKeyPressedEvent;
+ TXKeyPressedEvent = TXKeyEvent;
+
+ PXKeyReleasedEvent = ^TXKeyReleasedEvent;
+ TXKeyReleasedEvent = TXKeyEvent;
+
+ PXButtonEvent = ^TXButtonEvent;
+ TXButtonEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ root : TWindow;
+ subwindow : TWindow;
+ time : TTime;
+ x, y : cint;
+ x_root, y_root : cint;
+ state : cuint;
+ button : cuint;
+ same_screen : TBool;
+ end;
+
+ PXButtonPressedEvent = ^TXButtonPressedEvent;
+ TXButtonPressedEvent = TXButtonEvent;
+
+ PXButtonReleasedEvent = ^TXButtonReleasedEvent;
+ TXButtonReleasedEvent = TXButtonEvent;
+
+ PXMotionEvent = ^TXMotionEvent;
+ TXMotionEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ root : TWindow;
+ subwindow : TWindow;
+ time : TTime;
+ x, y : cint;
+ x_root, y_root : cint;
+ state : cuint;
+ is_hint : cchar;
+ same_screen : TBool;
+ end;
+
+ PXPointerMovedEvent = ^TXPointerMovedEvent;
+ TXPointerMovedEvent = TXMotionEvent;
+
+ PXCrossingEvent = ^TXCrossingEvent;
+ TXCrossingEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ root : TWindow;
+ subwindow : TWindow;
+ time : TTime;
+ x, y : cint;
+ x_root, y_root : cint;
+ mode : cint;
+ detail : cint;
+ same_screen : TBool;
+ focus : TBool;
+ state : cuint;
+ end;
+
+ PXEnterWindowEvent = ^TXEnterWindowEvent;
+ TXEnterWindowEvent = TXCrossingEvent;
+
+ PXLeaveWindowEvent = ^TXLeaveWindowEvent;
+ TXLeaveWindowEvent = TXCrossingEvent;
+
+ PXFocusChangeEvent = ^TXFocusChangeEvent;
+ TXFocusChangeEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ mode : cint;
+ detail : cint;
+ end;
+
+ PXFocusInEvent = ^TXFocusInEvent;
+ TXFocusInEvent = TXFocusChangeEvent;
+
+ PXFocusOutEvent = ^TXFocusOutEvent;
+ TXFocusOutEvent = TXFocusChangeEvent;
+
+ PXKeymapEvent = ^TXKeymapEvent;
+ TXKeymapEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ key_vector : array[0..31] of cchar;
+ end;
+
+ PXExposeEvent = ^TXExposeEvent;
+ TXExposeEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ x, y : cint;
+ width, height : cint;
+ count : cint;
+ end;
+
+ PXGraphicsExposeEvent = ^TXGraphicsExposeEvent;
+ TXGraphicsExposeEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ drawable : TDrawable;
+ x, y : cint;
+ width, height : cint;
+ count : cint;
+ major_code : cint;
+ minor_code : cint;
+ end;
+
+ PXNoExposeEvent = ^TXNoExposeEvent;
+ TXNoExposeEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ drawable : TDrawable;
+ major_code : cint;
+ minor_code : cint;
+ end;
+
+ PXVisibilityEvent = ^TXVisibilityEvent;
+ TXVisibilityEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ state : cint;
+ end;
+
+ PXCreateWindowEvent = ^TXCreateWindowEvent;
+ TXCreateWindowEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ parent : TWindow;
+ window : TWindow;
+ x, y : cint;
+ width, height : cint;
+ border_width : cint;
+ override_redirect : TBool;
+ end;
+
+ PXDestroyWindowEvent = ^TXDestroyWindowEvent;
+ TXDestroyWindowEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ end;
+
+ PXUnmapEvent = ^TXUnmapEvent;
+ TXUnmapEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ from_configure : TBool;
+ end;
+
+ PXMapEvent = ^TXMapEvent;
+ TXMapEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ override_redirect : TBool;
+ end;
+
+ PXMapRequestEvent = ^TXMapRequestEvent;
+ TXMapRequestEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ parent : TWindow;
+ window : TWindow;
+ end;
+
+ PXReparentEvent = ^TXReparentEvent;
+ TXReparentEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ parent : TWindow;
+ x, y : cint;
+ override_redirect : TBool;
+ end;
+
+ PXConfigureEvent = ^TXConfigureEvent;
+ TXConfigureEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ x, y : cint;
+ width, height : cint;
+ border_width : cint;
+ above : TWindow;
+ override_redirect : TBool;
+ end;
+
+ PXGravityEvent = ^TXGravityEvent;
+ TXGravityEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ x, y : cint;
+ end;
+
+ PXResizeRequestEvent = ^TXResizeRequestEvent;
+ TXResizeRequestEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ width, height : cint;
+ end;
+
+ PXConfigureRequestEvent = ^TXConfigureRequestEvent;
+ TXConfigureRequestEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ parent : TWindow;
+ window : TWindow;
+ x, y : cint;
+ width, height : cint;
+ border_width : cint;
+ above : TWindow;
+ detail : cint;
+ value_mask : culong;
+ end;
+
+ PXCirculateEvent = ^TXCirculateEvent;
+ TXCirculateEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ event : TWindow;
+ window : TWindow;
+ place : cint;
+ end;
+
+ PXCirculateRequestEvent = ^TXCirculateRequestEvent;
+ TXCirculateRequestEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ parent : TWindow;
+ window : TWindow;
+ place : cint;
+ end;
+
+ PXPropertyEvent = ^TXPropertyEvent;
+ TXPropertyEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ atom : TAtom;
+ time : TTime;
+ state : cint;
+ end;
+
+ PXSelectionClearEvent = ^TXSelectionClearEvent;
+ TXSelectionClearEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ selection : TAtom;
+ time : TTime;
+ end;
+
+ PXSelectionRequestEvent = ^TXSelectionRequestEvent;
+ TXSelectionRequestEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ owner : TWindow;
+ requestor : TWindow;
+ selection : TAtom;
+ target : TAtom;
+ _property : TAtom;
+ time : TTime;
+ end;
+
+ PXSelectionEvent = ^TXSelectionEvent;
+ TXSelectionEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ requestor : TWindow;
+ selection : TAtom;
+ target : TAtom;
+ _property : TAtom;
+ time : TTime;
+ end;
+
+ PXColormapEvent = ^TXColormapEvent;
+ TXColormapEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ colormap : TColormap;
+ c_new : TBool;
+ state : cint;
+ end;
+
+ PXClientMessageEvent = ^TXClientMessageEvent;
+ TXClientMessageEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ message_type : TAtom;
+ format : cint;
+ data : record
+ case longint of
+ 0 : ( b : array[0..19] of cchar );
+ 1 : ( s : array[0..9] of cshort );
+ 2 : ( l : array[0..4] of clong );
+ end;
+ end;
+
+ PXMappingEvent = ^TXMappingEvent;
+ TXMappingEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ request : cint;
+ first_keycode : cint;
+ count : cint;
+ end;
+
+ PXErrorEvent = ^TXErrorEvent;
+ TXErrorEvent = record
+ _type : cint;
+ display : PDisplay;
+ resourceid : TXID;
+ serial : culong;
+ error_code : cuchar;
+ request_code : cuchar;
+ minor_code : cuchar;
+ end;
+
+ PXAnyEvent = ^TXAnyEvent;
+ TXAnyEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ window : TWindow;
+ end;
+
+ PXEvent = ^TXEvent;
+ TXEvent = record
+ case longint of
+ 0 : ( _type : cint );
+ 1 : ( xany : TXAnyEvent );
+ 2 : ( xkey : TXKeyEvent );
+ 3 : ( xbutton : TXButtonEvent );
+ 4 : ( xmotion : TXMotionEvent );
+ 5 : ( xcrossing : TXCrossingEvent );
+ 6 : ( xfocus : TXFocusChangeEvent );
+ 7 : ( xexpose : TXExposeEvent );
+ 8 : ( xgraphicsexpose : TXGraphicsExposeEvent );
+ 9 : ( xnoexpose : TXNoExposeEvent );
+ 10 : ( xvisibility : TXVisibilityEvent );
+ 11 : ( xcreatewindow : TXCreateWindowEvent );
+ 12 : ( xdestroywindow : TXDestroyWindowEvent );
+ 13 : ( xunmap : TXUnmapEvent );
+ 14 : ( xmap : TXMapEvent );
+ 15 : ( xmaprequest : TXMapRequestEvent );
+ 16 : ( xreparent : TXReparentEvent );
+ 17 : ( xconfigure : TXConfigureEvent );
+ 18 : ( xgravity : TXGravityEvent );
+ 19 : ( xresizerequest : TXResizeRequestEvent );
+ 20 : ( xconfigurerequest : TXConfigureRequestEvent );
+ 21 : ( xcirculate : TXCirculateEvent );
+ 22 : ( xcirculaterequest : TXCirculateRequestEvent );
+ 23 : ( xproperty : TXPropertyEvent );
+ 24 : ( xselectionclear : TXSelectionClearEvent );
+ 25 : ( xselectionrequest : TXSelectionRequestEvent );
+ 26 : ( xselection : TXSelectionEvent );
+ 27 : ( xcolormap : TXColormapEvent );
+ 28 : ( xclient : TXClientMessageEvent );
+ 29 : ( xmapping : TXMappingEvent );
+ 30 : ( xerror : TXErrorEvent );
+ 31 : ( xkeymap : TXKeymapEvent );
+ 32 : ( pad : array[0..23] of clong );
+ end;
+
+type
+
+ PXCharStruct = ^TXCharStruct;
+ TXCharStruct = record
+ lbearing : cshort;
+ rbearing : cshort;
+ width : cshort;
+ ascent : cshort;
+ descent : cshort;
+ attributes : cushort;
+ end;
+
+ PXFontProp = ^TXFontProp;
+ TXFontProp = record
+ name : TAtom;
+ card32 : culong;
+ end;
+
+ PPPXFontStruct = ^PPXFontStruct;
+ PPXFontStruct = ^PXFontStruct;
+ PXFontStruct = ^TXFontStruct;
+ TXFontStruct = record
+ ext_data : PXExtData;
+ fid : TFont;
+ direction : cunsigned;
+ min_char_or_byte2 : cunsigned;
+ max_char_or_byte2 : cunsigned;
+ min_byte1 : cunsigned;
+ max_byte1 : cunsigned;
+ all_chars_exist : TBool;
+ default_char : cunsigned;
+ n_properties : cint;
+ properties : PXFontProp;
+ min_bounds : TXCharStruct;
+ max_bounds : TXCharStruct;
+ per_char : PXCharStruct;
+ ascent : cint;
+ descent : cint;
+ end;
+
+ PXTextItem = ^TXTextItem;
+ TXTextItem = record
+ chars : Pchar;
+ nchars : cint;
+ delta : cint;
+ font : TFont;
+ end;
+
+ PXChar2b = ^TXChar2b;
+ TXChar2b = record
+ byte1 : cuchar;
+ byte2 : cuchar;
+ end;
+
+ PXTextItem16 = ^TXTextItem16;
+ TXTextItem16 = record
+ chars : PXChar2b;
+ nchars : cint;
+ delta : cint;
+ font : TFont;
+ end;
+
+ PXEDataObject = ^TXEDataObject;
+ TXEDataObject = record
+ case longint of
+ 0 : ( display : PDisplay );
+ 1 : ( gc : TGC );
+ 2 : ( visual : PVisual );
+ 3 : ( screen : PScreen );
+ 4 : ( pixmap_format : PScreenFormat );
+ 5 : ( font : PXFontStruct );
+ end;
+
+ PXFontSetExtents = ^TXFontSetExtents;
+ TXFontSetExtents = record
+ max_ink_extent : TXRectangle;
+ max_logical_extent : TXRectangle;
+ end;
+
+ PXOM = ^TXOM;
+ TXOM = record
+ end;
+
+ PXOC = ^TXOC;
+ TXOC = record
+ end;
+ TXFontSet = PXOC;
+ PXFontSet = ^TXFontSet;
+
+ PXmbTextItem = ^TXmbTextItem;
+ TXmbTextItem = record
+ chars : Pchar;
+ nchars : cint;
+ delta : cint;
+ font_set : TXFontSet;
+ end;
+
+ PXwcTextItem = ^TXwcTextItem;
+ TXwcTextItem = record
+ chars : PWideChar; {wchar_t*}
+ nchars : cint;
+ delta : cint;
+ font_set : TXFontSet;
+ end;
+
+const
+ XNRequiredCharSet = 'requiredCharSet';
+ XNQueryOrientation = 'queryOrientation';
+ XNBaseFontName = 'baseFontName';
+ XNOMAutomatic = 'omAutomatic';
+ XNMissingCharSet = 'missingCharSet';
+ XNDefaultString = 'defaultString';
+ XNOrientation = 'orientation';
+ XNDirectionalDependentDrawing = 'directionalDependentDrawing';
+ XNContextualDrawing = 'contextualDrawing';
+ XNFontInfo = 'fontInfo';
+type
+
+ PXOMCharSetList = ^TXOMCharSetList;
+ TXOMCharSetList = record
+ charset_count : cint;
+ charset_list : PPChar;
+ end;
+
+ PXOrientation = ^TXOrientation;
+ TXOrientation = (XOMOrientation_LTR_TTB,XOMOrientation_RTL_TTB,
+ XOMOrientation_TTB_LTR,XOMOrientation_TTB_RTL,
+ XOMOrientation_Context);
+
+ PXOMOrientation = ^TXOMOrientation;
+ TXOMOrientation = record
+ num_orientation : cint;
+ orientation : PXOrientation;
+ end;
+
+ PXOMFontInfo = ^TXOMFontInfo;
+ TXOMFontInfo = record
+ num_font : cint;
+ font_struct_list : ^PXFontStruct;
+ font_name_list : PPChar;
+ end;
+
+ PXIM = ^TXIM;
+ TXIM = record
+ end;
+
+ PXIC = ^TXIC;
+ TXIC = record
+ end;
+
+ TXIMProc = procedure (para1:TXIM; para2:TXPointer; para3:TXPointer);cdecl;
+
+ TXICProc = function (para1:TXIC; para2:TXPointer; para3:TXPointer):TBool;cdecl;
+
+ TXIDProc = procedure (para1:PDisplay; para2:TXPointer; para3:TXPointer);cdecl;
+
+ PXIMStyle = ^TXIMStyle;
+ TXIMStyle = culong;
+
+ PXIMStyles = ^TXIMStyles;
+ TXIMStyles = record
+ count_styles : cushort;
+ supported_styles : PXIMStyle;
+ end;
+
+const
+ XIMPreeditArea = $0001;
+ XIMPreeditCallbacks = $0002;
+ XIMPreeditPosition = $0004;
+ XIMPreeditNothing = $0008;
+ XIMPreeditNone = $0010;
+ XIMStatusArea = $0100;
+ XIMStatusCallbacks = $0200;
+ XIMStatusNothing = $0400;
+ XIMStatusNone = $0800;
+ XNVaNestedList = 'XNVaNestedList';
+ XNQueryInputStyle = 'queryInputStyle';
+ XNClientWindow = 'clientWindow';
+ XNInputStyle = 'inputStyle';
+ XNFocusWindow = 'focusWindow';
+ XNResourceName = 'resourceName';
+ XNResourceClass = 'resourceClass';
+ XNGeometryCallback = 'geometryCallback';
+ XNDestroyCallback = 'destroyCallback';
+ XNFilterEvents = 'filterEvents';
+ XNPreeditStartCallback = 'preeditStartCallback';
+ XNPreeditDoneCallback = 'preeditDoneCallback';
+ XNPreeditDrawCallback = 'preeditDrawCallback';
+ XNPreeditCaretCallback = 'preeditCaretCallback';
+ XNPreeditStateNotifyCallback = 'preeditStateNotifyCallback';
+ XNPreeditAttributes = 'preeditAttributes';
+ XNStatusStartCallback = 'statusStartCallback';
+ XNStatusDoneCallback = 'statusDoneCallback';
+ XNStatusDrawCallback = 'statusDrawCallback';
+ XNStatusAttributes = 'statusAttributes';
+ XNArea = 'area';
+ XNAreaNeeded = 'areaNeeded';
+ XNSpotLocation = 'spotLocation';
+ XNColormap = 'colorMap';
+ XNStdColormap = 'stdColorMap';
+ XNForeground = 'foreground';
+ XNBackground = 'background';
+ XNBackgroundPixmap = 'backgroundPixmap';
+ XNFontSet = 'fontSet';
+ XNLineSpace = 'lineSpace';
+ XNCursor = 'cursor';
+ XNQueryIMValuesList = 'queryIMValuesList';
+ XNQueryICValuesList = 'queryICValuesList';
+ XNVisiblePosition = 'visiblePosition';
+ XNR6PreeditCallback = 'r6PreeditCallback';
+ XNStringConversionCallback = 'stringConversionCallback';
+ XNStringConversion = 'stringConversion';
+ XNResetState = 'resetState';
+ XNHotKey = 'hotKey';
+ XNHotKeyState = 'hotKeyState';
+ XNPreeditState = 'preeditState';
+ XNSeparatorofNestedList = 'separatorofNestedList';
+ XBufferOverflow = -(1);
+ XLookupNone = 1;
+ XLookupChars = 2;
+ XLookupKeySymVal = 3;
+ XLookupBoth = 4;
+type
+
+ PXVaNestedList = ^TXVaNestedList;
+ TXVaNestedList = pointer;
+
+ PXIMCallback = ^TXIMCallback;
+ TXIMCallback = record
+ client_data : TXPointer;
+ callback : TXIMProc;
+ end;
+
+ PXICCallback = ^TXICCallback;
+ TXICCallback = record
+ client_data : TXPointer;
+ callback : TXICProc;
+ end;
+
+ PXIMFeedback = ^TXIMFeedback;
+ TXIMFeedback = culong;
+
+const
+ XIMReverse = 1;
+ XIMUnderline = 1 shl 1;
+ XIMHighlight = 1 shl 2;
+ XIMPrimary = 1 shl 5;
+ XIMSecondary = 1 shl 6;
+ XIMTertiary = 1 shl 7;
+ XIMVisibleToForward = 1 shl 8;
+ XIMVisibleToBackword = 1 shl 9;
+ XIMVisibleToCenter = 1 shl 10;
+type
+
+ PXIMText = ^TXIMText;
+ TXIMText = record
+ length : cushort;
+ feedback : PXIMFeedback;
+ encoding_is_wchar : TBool;
+ _string : record
+ case longint of
+ 0 : ( multi_byte : Pchar );
+ 1 : ( wide_char : PWideChar ); {wchar_t*}
+ end;
+ end;
+
+ PXIMPreeditState = ^TXIMPreeditState;
+ TXIMPreeditState = culong;
+
+const
+ XIMPreeditUnKnown = 0;
+ XIMPreeditEnable = 1;
+ XIMPreeditDisable = 1 shl 1;
+type
+
+ PXIMPreeditStateNotifyCallbackStruct = ^TXIMPreeditStateNotifyCallbackStruct;
+ TXIMPreeditStateNotifyCallbackStruct = record
+ state : TXIMPreeditState;
+ end;
+
+ PXIMResetState = ^TXIMResetState;
+ TXIMResetState = culong;
+
+const
+ XIMInitialState = 1;
+ XIMPreserveState = 1 shl 1;
+type
+
+ PXIMStringConversionFeedback = ^TXIMStringConversionFeedback;
+ TXIMStringConversionFeedback = culong;
+
+const
+ XIMStringConversionLeftEdge = $00000001;
+ XIMStringConversionRightEdge = $00000002;
+ XIMStringConversionTopEdge = $00000004;
+ XIMStringConversionBottomEdge = $00000008;
+ XIMStringConversionConcealed = $00000010;
+ XIMStringConversionWrapped = $00000020;
+type
+
+ PXIMStringConversionText = ^TXIMStringConversionText;
+ TXIMStringConversionText = record
+ length : cushort;
+ feedback : PXIMStringConversionFeedback;
+ encoding_is_wchar : TBool;
+ _string : record
+ case longint of
+ 0 : ( mbs : Pchar );
+ 1 : ( wcs : PWideChar ); {wchar_t*}
+ end;
+ end;
+
+ PXIMStringConversionPosition = ^TXIMStringConversionPosition;
+ TXIMStringConversionPosition = cushort;
+
+ PXIMStringConversionType = ^TXIMStringConversionType;
+ TXIMStringConversionType = cushort;
+
+const
+ XIMStringConversionBuffer = $0001;
+ XIMStringConversionLine = $0002;
+ XIMStringConversionWord = $0003;
+ XIMStringConversionChar = $0004;
+type
+
+ PXIMStringConversionOperation = ^TXIMStringConversionOperation;
+ TXIMStringConversionOperation = cushort;
+
+const
+ XIMStringConversionSubstitution = $0001;
+ XIMStringConversionRetrieval = $0002;
+type
+
+ PXIMCaretDirection = ^TXIMCaretDirection;
+ TXIMCaretDirection = (XIMForwardChar,XIMBackwardChar,XIMForwardWord,
+ XIMBackwardWord,XIMCaretUp,XIMCaretDown,
+ XIMNextLine,XIMPreviousLine,XIMLineStart,
+ XIMLineEnd,XIMAbsolutePosition,XIMDontChange
+ );
+
+ PXIMStringConversionCallbackStruct = ^TXIMStringConversionCallbackStruct;
+ TXIMStringConversionCallbackStruct = record
+ position : TXIMStringConversionPosition;
+ direction : TXIMCaretDirection;
+ operation : TXIMStringConversionOperation;
+ factor : cushort;
+ text : PXIMStringConversionText;
+ end;
+
+ PXIMPreeditDrawCallbackStruct = ^TXIMPreeditDrawCallbackStruct;
+ TXIMPreeditDrawCallbackStruct = record
+ caret : cint;
+ chg_first : cint;
+ chg_length : cint;
+ text : PXIMText;
+ end;
+
+ PXIMCaretStyle = ^TXIMCaretStyle;
+ TXIMCaretStyle = (XIMIsInvisible,XIMIsPrimary,XIMIsSecondary
+ );
+
+ PXIMPreeditCaretCallbackStruct = ^TXIMPreeditCaretCallbackStruct;
+ TXIMPreeditCaretCallbackStruct = record
+ position : cint;
+ direction : TXIMCaretDirection;
+ style : TXIMCaretStyle;
+ end;
+
+ PXIMStatusDataType = ^TXIMStatusDataType;
+ TXIMStatusDataType = (XIMTextType,XIMBitmapType);
+
+ PXIMStatusDrawCallbackStruct = ^TXIMStatusDrawCallbackStruct;
+ TXIMStatusDrawCallbackStruct = record
+ _type : TXIMStatusDataType;
+ data : record
+ case longint of
+ 0 : ( text : PXIMText );
+ 1 : ( bitmap : TPixmap );
+ end;
+ end;
+
+ PXIMHotKeyTrigger = ^TXIMHotKeyTrigger;
+ TXIMHotKeyTrigger = record
+ keysym : TKeySym;
+ modifier : cint;
+ modifier_mask : cint;
+ end;
+
+ PXIMHotKeyTriggers = ^TXIMHotKeyTriggers;
+ TXIMHotKeyTriggers = record
+ num_hot_key : cint;
+ key : PXIMHotKeyTrigger;
+ end;
+
+ PXIMHotKeyState = ^TXIMHotKeyState;
+ TXIMHotKeyState = culong;
+
+const
+ XIMHotKeyStateON = $0001;
+ XIMHotKeyStateOFF = $0002;
+type
+
+ PXIMValuesList = ^TXIMValuesList;
+ TXIMValuesList = record
+ count_values : cushort;
+ supported_values : PPChar;
+ end;
+{$ifndef os2}
+ var
+ _Xdebug : cint;cvar;external;
+{$endif}
+type
+ funcdisp = function(display:PDisplay):cint;cdecl;
+ funcifevent = function(display:PDisplay; event:PXEvent; p : TXPointer):TBool;cdecl;
+ chararr32 = array[0..31] of char;
+
+const
+ AllPlanes : culong = culong(not 0);
+
+function XLoadQueryFont(para1:PDisplay; para2:Pchar):PXFontStruct;cdecl;external libX11;
+function XQueryFont(para1:PDisplay; para2:TXID):PXFontStruct;cdecl;external libX11;
+function XGetMotionEvents(para1:PDisplay; para2:TWindow; para3:TTime; para4:TTime; para5:Pcint):PXTimeCoord;cdecl;external libX11;
+function XDeleteModifiermapEntry(para1:PXModifierKeymap; para2:TKeyCode; para3:cint):PXModifierKeymap;cdecl;external libX11;
+function XGetModifierMapping(para1:PDisplay):PXModifierKeymap;cdecl;external libX11;
+function XInsertModifiermapEntry(para1:PXModifierKeymap; para2:TKeyCode; para3:cint):PXModifierKeymap;cdecl;external libX11;
+function XNewModifiermap(para1:cint):PXModifierKeymap;cdecl;external libX11;
+function XCreateImage(para1:PDisplay; para2:PVisual; para3:cuint; para4:cint; para5:cint;
+ para6:Pchar; para7:cuint; para8:cuint; para9:cint; para10:cint):PXImage;cdecl;external libX11;
+function XInitImage(para1:PXImage):TStatus;cdecl;external libX11;
+function XGetImage(para1:PDisplay; para2:TDrawable; para3:cint; para4:cint; para5:cuint;
+ para6:cuint; para7:culong; para8:cint):PXImage;cdecl;external libX11;
+function XGetSubImage(para1:PDisplay; para2:TDrawable; para3:cint; para4:cint; para5:cuint;
+ para6:cuint; para7:culong; para8:cint; para9:PXImage; para10:cint;
+ para11:cint):PXImage;cdecl;external libX11;
+function XOpenDisplay(para1:Pchar):PDisplay;cdecl;external libX11;
+procedure XrmInitialize;cdecl;external libX11;
+function XFetchBytes(para1:PDisplay; para2:Pcint):Pchar;cdecl;external libX11;
+function XFetchBuffer(para1:PDisplay; para2:Pcint; para3:cint):Pchar;cdecl;external libX11;
+function XGetAtomName(para1:PDisplay; para2:TAtom):Pchar;cdecl;external libX11;
+function XGetAtomNames(para1:PDisplay; para2:PAtom; para3:cint; para4:PPchar):TStatus;cdecl;external libX11;
+function XGetDefault(para1:PDisplay; para2:Pchar; para3:Pchar):Pchar;cdecl;external libX11;
+function XDisplayName(para1:Pchar):Pchar;cdecl;external libX11;
+function XKeysymToString(para1:TKeySym):Pchar;cdecl;external libX11;
+function XSynchronize(para1:PDisplay; para2:TBool):funcdisp;cdecl;external libX11;
+function XSetAfterFunction(para1:PDisplay; para2:funcdisp):funcdisp;cdecl;external libX11;
+function XInternAtom(para1:PDisplay; para2:Pchar; para3:TBool):TAtom;cdecl;external libX11;
+function XInternAtoms(para1:PDisplay; para2:PPchar; para3:cint; para4:TBool; para5:PAtom):TStatus;cdecl;external libX11;
+function XCopyColormapAndFree(para1:PDisplay; para2:TColormap):TColormap;cdecl;external libX11;
+function XCreateColormap(para1:PDisplay; para2:TWindow; para3:PVisual; para4:cint):TColormap;cdecl;external libX11;
+function XCreatePixmapCursor(para1:PDisplay; para2:TPixmap; para3:TPixmap; para4:PXColor; para5:PXColor;
+ para6:cuint; para7:cuint):TCursor;cdecl;external libX11;
+function XCreateGlyphCursor(para1:PDisplay; para2:TFont; para3:TFont; para4:cuint; para5:cuint;
+ para6:PXColor; para7:PXColor):TCursor;cdecl;external libX11;
+function XCreateFontCursor(para1:PDisplay; para2:cuint):TCursor;cdecl;external libX11;
+function XLoadFont(para1:PDisplay; para2:Pchar):TFont;cdecl;external libX11;
+function XCreateGC(para1:PDisplay; para2:TDrawable; para3:culong; para4:PXGCValues):TGC;cdecl;external libX11;
+function XGContextFromGC(para1:TGC):TGContext;cdecl;external libX11;
+procedure XFlushGC(para1:PDisplay; para2:TGC);cdecl;external libX11;
+function XCreatePixmap(para1:PDisplay; para2:TDrawable; para3:cuint; para4:cuint; para5:cuint):TPixmap;cdecl;external libX11;
+function XCreateBitmapFromData(para1:PDisplay; para2:TDrawable; para3:Pchar; para4:cuint; para5:cuint):TPixmap;cdecl;external libX11;
+function XCreatePixmapFromBitmapData(para1:PDisplay; para2:TDrawable; para3:Pchar; para4:cuint; para5:cuint;
+ para6:culong; para7:culong; para8:cuint):TPixmap;cdecl;external libX11;
+function XCreateSimpleWindow(para1:PDisplay; para2:TWindow; para3:cint; para4:cint; para5:cuint;
+ para6:cuint; para7:cuint; para8:culong; para9:culong):TWindow;cdecl;external libX11;
+function XGetSelectionOwner(para1:PDisplay; para2:TAtom):TWindow;cdecl;external libX11;
+function XCreateWindow(para1:PDisplay; para2:TWindow; para3:cint; para4:cint; para5:cuint;
+ para6:cuint; para7:cuint; para8:cint; para9:cuint; para10:PVisual;
+ para11:culong; para12:PXSetWindowAttributes):TWindow;cdecl;external libX11;
+function XListInstalledColormaps(para1:PDisplay; para2:TWindow; para3:Pcint):PColormap;cdecl;external libX11;
+function XListFonts(para1:PDisplay; para2:Pchar; para3:cint; para4:Pcint):PPChar;cdecl;external libX11;
+function XListFontsWithInfo(para1:PDisplay; para2:Pchar; para3:cint; para4:Pcint; para5:PPXFontStruct):PPChar;cdecl;external libX11;
+function XGetFontPath(para1:PDisplay; para2:Pcint):PPChar;cdecl;external libX11;
+function XListExtensions(para1:PDisplay; para2:Pcint):PPChar;cdecl;external libX11;
+function XListProperties(para1:PDisplay; para2:TWindow; para3:Pcint):PAtom;cdecl;external libX11;
+function XListHosts(para1:PDisplay; para2:Pcint; para3:PBool):PXHostAddress;cdecl;external libX11;
+function XKeycodeToKeysym(para1:PDisplay; para2:TKeyCode; para3:cint):TKeySym;cdecl;external libX11;
+function XLookupKeysym(para1:PXKeyEvent; para2:cint):TKeySym;cdecl;external libX11;
+function XGetKeyboardMapping(para1:PDisplay; para2:TKeyCode; para3:cint; para4:Pcint):PKeySym;cdecl;external libX11;
+function XStringToKeysym(para1:Pchar):TKeySym;cdecl;external libX11;
+function XMaxRequestSize(para1:PDisplay):clong;cdecl;external libX11;
+function XExtendedMaxRequestSize(para1:PDisplay):clong;cdecl;external libX11;
+function XResourceManagerString(para1:PDisplay):Pchar;cdecl;external libX11;
+function XScreenResourceString(para1:PScreen):Pchar;cdecl;external libX11;
+function XDisplayMotionBufferSize(para1:PDisplay):culong;cdecl;external libX11;
+function XVisualIDFromVisual(para1:PVisual):TVisualID;cdecl;external libX11;
+function XInitThreads:TStatus;cdecl;external libX11;
+procedure XLockDisplay(para1:PDisplay);cdecl;external libX11;
+procedure XUnlockDisplay(para1:PDisplay);cdecl;external libX11;
+function XInitExtension(para1:PDisplay; para2:Pchar):PXExtCodes;cdecl;external libX11;
+function XAddExtension(para1:PDisplay):PXExtCodes;cdecl;external libX11;
+function XFindOnExtensionList(para1:PPXExtData; para2:cint):PXExtData;cdecl;external libX11;
+function XEHeadOfExtensionList(para1:TXEDataObject):PPXExtData;cdecl;external libX11;
+function XRootWindow(para1:PDisplay; para2:cint):TWindow;cdecl;external libX11;
+function XDefaultRootWindow(para1:PDisplay):TWindow;cdecl;external libX11;
+function XRootWindowOfScreen(para1:PScreen):TWindow;cdecl;external libX11;
+function XDefaultVisual(para1:PDisplay; para2:cint):PVisual;cdecl;external libX11;
+function XDefaultVisualOfScreen(para1:PScreen):PVisual;cdecl;external libX11;
+function XDefaultGC(para1:PDisplay; para2:cint):TGC;cdecl;external libX11;
+function XDefaultGCOfScreen(para1:PScreen):TGC;cdecl;external libX11;
+function XBlackPixel(para1:PDisplay; para2:cint):culong;cdecl;external libX11;
+function XWhitePixel(para1:PDisplay; para2:cint):culong;cdecl;external libX11;
+function XAllPlanes:culong;cdecl;external libX11;
+function XBlackPixelOfScreen(para1:PScreen):culong;cdecl;external libX11;
+function XWhitePixelOfScreen(para1:PScreen):culong;cdecl;external libX11;
+function XNextRequest(para1:PDisplay):culong;cdecl;external libX11;
+function XLastKnownRequestProcessed(para1:PDisplay):culong;cdecl;external libX11;
+function XServerVendor(para1:PDisplay):Pchar;cdecl;external libX11;
+function XDisplayString(para1:PDisplay):Pchar;cdecl;external libX11;
+function XDefaultColormap(para1:PDisplay; para2:cint):TColormap;cdecl;external libX11;
+function XDefaultColormapOfScreen(para1:PScreen):TColormap;cdecl;external libX11;
+function XDisplayOfScreen(para1:PScreen):PDisplay;cdecl;external libX11;
+function XScreenOfDisplay(para1:PDisplay; para2:cint):PScreen;cdecl;external libX11;
+function XDefaultScreenOfDisplay(para1:PDisplay):PScreen;cdecl;external libX11;
+function XEventMaskOfScreen(para1:PScreen):clong;cdecl;external libX11;
+function XScreenNumberOfScreen(para1:PScreen):cint;cdecl;external libX11;
+type
+
+ TXErrorHandler = function (para1:PDisplay; para2:PXErrorEvent):cint;cdecl;
+
+function XSetErrorHandler(para1:TXErrorHandler):TXErrorHandler;cdecl;external libX11;
+type
+
+ TXIOErrorHandler = function (para1:PDisplay):cint;cdecl;
+
+function XSetIOErrorHandler(para1:TXIOErrorHandler):TXIOErrorHandler;cdecl;external libX11;
+function XListPixmapFormats(para1:PDisplay; para2:Pcint):PXPixmapFormatValues;cdecl;external libX11;
+function XListDepths(para1:PDisplay; para2:cint; para3:Pcint):Pcint;cdecl;external libX11;
+function XReconfigureWMWindow(para1:PDisplay; para2:TWindow; para3:cint; para4:cuint; para5:PXWindowChanges):TStatus;cdecl;external libX11;
+function XGetWMProtocols(para1:PDisplay; para2:TWindow; para3:PPAtom; para4:Pcint):TStatus;cdecl;external libX11;
+function XSetWMProtocols(para1:PDisplay; para2:TWindow; para3:PAtom; para4:cint):TStatus;cdecl;external libX11;
+function XIconifyWindow(para1:PDisplay; para2:TWindow; para3:cint):TStatus;cdecl;external libX11;
+function XWithdrawWindow(para1:PDisplay; para2:TWindow; para3:cint):TStatus;cdecl;external libX11;
+function XGetCommand(para1:PDisplay; para2:TWindow; para3:PPPchar; para4:Pcint):TStatus;cdecl;external libX11;
+function XGetWMColormapWindows(para1:PDisplay; para2:TWindow; para3:PPWindow; para4:Pcint):TStatus;cdecl;external libX11;
+function XSetWMColormapWindows(para1:PDisplay; para2:TWindow; para3:PWindow; para4:cint):TStatus;cdecl;external libX11;
+procedure XFreeStringList(para1:PPchar);cdecl;external libX11;
+function XSetTransientForHint(para1:PDisplay; para2:TWindow; para3:TWindow):cint;cdecl;external libX11;
+function XActivateScreenSaver(para1:PDisplay):cint;cdecl;external libX11;
+function XAddHost(para1:PDisplay; para2:PXHostAddress):cint;cdecl;external libX11;
+function XAddHosts(para1:PDisplay; para2:PXHostAddress; para3:cint):cint;cdecl;external libX11;
+function XAddToExtensionList(para1:PPXExtData; para2:PXExtData):cint;cdecl;external libX11;
+function XAddToSaveSet(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XAllocColor(para1:PDisplay; para2:TColormap; para3:PXColor):TStatus;cdecl;external libX11;
+function XAllocColorCells(para1:PDisplay; para2:TColormap; para3:TBool; para4:Pculong; para5:cuint;
+ para6:Pculong; para7:cuint):TStatus;cdecl;external libX11;
+function XAllocColorPlanes(para1:PDisplay; para2:TColormap; para3:TBool; para4:Pculong; para5:cint;
+ para6:cint; para7:cint; para8:cint; para9:Pculong; para10:Pculong;
+ para11:Pculong):TStatus;cdecl;external libX11;
+function XAllocNamedColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:PXColor; para5:PXColor):TStatus;cdecl;external libX11;
+function XAllowEvents(para1:PDisplay; para2:cint; para3:TTime):cint;cdecl;external libX11;
+function XAutoRepeatOff(para1:PDisplay):cint;cdecl;external libX11;
+function XAutoRepeatOn(para1:PDisplay):cint;cdecl;external libX11;
+function XBell(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XBitmapBitOrder(para1:PDisplay):cint;cdecl;external libX11;
+function XBitmapPad(para1:PDisplay):cint;cdecl;external libX11;
+function XBitmapUnit(para1:PDisplay):cint;cdecl;external libX11;
+function XCellsOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XChangeActivePointerGrab(para1:PDisplay; para2:cuint; para3:TCursor; para4:TTime):cint;cdecl;external libX11;
+function XChangeGC(para1:PDisplay; para2:TGC; para3:culong; para4:PXGCValues):cint;cdecl;external libX11;
+function XChangeKeyboardControl(para1:PDisplay; para2:culong; para3:PXKeyboardControl):cint;cdecl;external libX11;
+function XChangeKeyboardMapping(para1:PDisplay; para2:cint; para3:cint; para4:PKeySym; para5:cint):cint;cdecl;external libX11;
+function XChangePointerControl(para1:PDisplay; para2:TBool; para3:TBool; para4:cint; para5:cint;
+ para6:cint):cint;cdecl;external libX11;
+function XChangeProperty(para1:PDisplay; para2:TWindow; para3:TAtom; para4:TAtom; para5:cint;
+ para6:cint; para7:Pcuchar; para8:cint):cint;cdecl;external libX11;
+function XChangeSaveSet(para1:PDisplay; para2:TWindow; para3:cint):cint;cdecl;external libX11;
+function XChangeWindowAttributes(para1:PDisplay; para2:TWindow; para3:culong; para4:PXSetWindowAttributes):cint;cdecl;external libX11;
+function XCheckIfEvent(para1:PDisplay; para2:PXEvent; para3:funcifevent; para4:TXPointer):TBool;cdecl;external libX11;
+function XCheckMaskEvent(para1:PDisplay; para2:clong; para3:PXEvent):TBool;cdecl;external libX11;
+function XCheckTypedEvent(para1:PDisplay; para2:cint; para3:PXEvent):TBool;cdecl;external libX11;
+function XCheckTypedWindowEvent(para1:PDisplay; para2:TWindow; para3:cint; para4:PXEvent):TBool;cdecl;external libX11;
+function XCheckWindowEvent(para1:PDisplay; para2:TWindow; para3:clong; para4:PXEvent):TBool;cdecl;external libX11;
+function XCirculateSubwindows(para1:PDisplay; para2:TWindow; para3:cint):cint;cdecl;external libX11;
+function XCirculateSubwindowsDown(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XCirculateSubwindowsUp(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XClearArea(para1:PDisplay; para2:TWindow; para3:cint; para4:cint; para5:cuint;
+ para6:cuint; para7:TBool):cint;cdecl;external libX11;
+function XClearWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XCloseDisplay(para1:PDisplay):cint;cdecl;external libX11;
+function XConfigureWindow(para1:PDisplay; para2:TWindow; para3:cuint; para4:PXWindowChanges):cint;cdecl;external libX11;
+function XConnectionNumber(para1:PDisplay):cint;cdecl;external libX11;
+function XConvertSelection(para1:PDisplay; para2:TAtom; para3:TAtom; para4:TAtom; para5:TWindow;
+ para6:TTime):cint;cdecl;external libX11;
+function XCopyArea(para1:PDisplay; para2:TDrawable; para3:TDrawable; para4:TGC; para5:cint;
+ para6:cint; para7:cuint; para8:cuint; para9:cint; para10:cint):cint;cdecl;external libX11;
+function XCopyGC(para1:PDisplay; para2:TGC; para3:culong; para4:TGC):cint;cdecl;external libX11;
+function XCopyPlane(para1:PDisplay; para2:TDrawable; para3:TDrawable; para4:TGC; para5:cint;
+ para6:cint; para7:cuint; para8:cuint; para9:cint; para10:cint;
+ para11:culong):cint;cdecl;external libX11;
+function XDefaultDepth(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDefaultDepthOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XDefaultScreen(para1:PDisplay):cint;cdecl;external libX11;
+function XDefineCursor(para1:PDisplay; para2:TWindow; para3:TCursor):cint;cdecl;external libX11;
+function XDeleteProperty(para1:PDisplay; para2:TWindow; para3:TAtom):cint;cdecl;external libX11;
+function XDestroyWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XDestroySubwindows(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XDoesBackingStore(para1:PScreen):cint;cdecl;external libX11;
+function XDoesSaveUnders(para1:PScreen):TBool;cdecl;external libX11;
+function XDisableAccessControl(para1:PDisplay):cint;cdecl;external libX11;
+function XDisplayCells(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDisplayHeight(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDisplayHeightMM(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDisplayKeycodes(para1:PDisplay; para2:Pcint; para3:Pcint):cint;cdecl;external libX11;
+function XDisplayPlanes(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDisplayWidth(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDisplayWidthMM(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XDrawArc(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:cuint; para7:cuint; para8:cint; para9:cint):cint;cdecl;external libX11;
+function XDrawArcs(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXArc; para5:cint):cint;cdecl;external libX11;
+function XDrawImageString(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:Pchar; para7:cint):cint;cdecl;external libX11;
+function XDrawImageString16(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXChar2b; para7:cint):cint;cdecl;external libX11;
+function XDrawLine(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:cint; para7:cint):cint;cdecl;external libX11;
+function XDrawLines(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXPoint; para5:cint;
+ para6:cint):cint;cdecl;external libX11;
+function XDrawPoint(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint):cint;cdecl;external libX11;
+function XDrawPoints(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXPoint; para5:cint;
+ para6:cint):cint;cdecl;external libX11;
+function XDrawRectangle(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:cuint; para7:cuint):cint;cdecl;external libX11;
+function XDrawRectangles(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXRectangle; para5:cint):cint;cdecl;external libX11;
+function XDrawSegments(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXSegment; para5:cint):cint;cdecl;external libX11;
+function XDrawString(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:Pchar; para7:cint):cint;cdecl;external libX11;
+function XDrawString16(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXChar2b; para7:cint):cint;cdecl;external libX11;
+function XDrawText(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXTextItem; para7:cint):cint;cdecl;external libX11;
+function XDrawText16(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXTextItem16; para7:cint):cint;cdecl;external libX11;
+function XEnableAccessControl(para1:PDisplay):cint;cdecl;external libX11;
+function XEventsQueued(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XFetchName(para1:PDisplay; para2:TWindow; para3:PPchar):TStatus;cdecl;external libX11;
+function XFillArc(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:cuint; para7:cuint; para8:cint; para9:cint):cint;cdecl;external libX11;
+function XFillArcs(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXArc; para5:cint):cint;cdecl;external libX11;
+function XFillPolygon(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXPoint; para5:cint;
+ para6:cint; para7:cint):cint;cdecl;external libX11;
+function XFillRectangle(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:cuint; para7:cuint):cint;cdecl;external libX11;
+function XFillRectangles(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXRectangle; para5:cint):cint;cdecl;external libX11;
+function XFlush(para1:PDisplay):cint;cdecl;external libX11;
+function XForceScreenSaver(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XFree(para1:pointer):cint;cdecl;external libX11;
+function XFreeColormap(para1:PDisplay; para2:TColormap):cint;cdecl;external libX11;
+function XFreeColors(para1:PDisplay; para2:TColormap; para3:Pculong; para4:cint; para5:culong):cint;cdecl;external libX11;
+function XFreeCursor(para1:PDisplay; para2:TCursor):cint;cdecl;external libX11;
+function XFreeExtensionList(para1:PPchar):cint;cdecl;external libX11;
+function XFreeFont(para1:PDisplay; para2:PXFontStruct):cint;cdecl;external libX11;
+function XFreeFontInfo(para1:PPchar; para2:PXFontStruct; para3:cint):cint;cdecl;external libX11;
+function XFreeFontNames(para1:PPchar):cint;cdecl;external libX11;
+function XFreeFontPath(para1:PPchar):cint;cdecl;external libX11;
+function XFreeGC(para1:PDisplay; para2:TGC):cint;cdecl;external libX11;
+function XFreeModifiermap(para1:PXModifierKeymap):cint;cdecl;external libX11;
+function XFreePixmap(para1:PDisplay; para2:TPixmap):cint;cdecl;external libX11;
+function XGeometry(para1:PDisplay; para2:cint; para3:Pchar; para4:Pchar; para5:cuint;
+ para6:cuint; para7:cuint; para8:cint; para9:cint; para10:Pcint;
+ para11:Pcint; para12:Pcint; para13:Pcint):cint;cdecl;external libX11;
+function XGetErrorDatabaseText(para1:PDisplay; para2:Pchar; para3:Pchar; para4:Pchar; para5:Pchar;
+ para6:cint):cint;cdecl;external libX11;
+function XGetErrorText(para1:PDisplay; para2:cint; para3:Pchar; para4:cint):cint;cdecl;external libX11;
+function XGetFontProperty(para1:PXFontStruct; para2:TAtom; para3:Pculong):TBool;cdecl;external libX11;
+function XGetGCValues(para1:PDisplay; para2:TGC; para3:culong; para4:PXGCValues):TStatus;cdecl;external libX11;
+function XGetGeometry(para1:PDisplay; para2:TDrawable; para3:PWindow; para4:Pcint; para5:Pcint;
+ para6:Pcuint; para7:Pcuint; para8:Pcuint; para9:Pcuint):TStatus;cdecl;external libX11;
+function XGetIconName(para1:PDisplay; para2:TWindow; para3:PPchar):TStatus;cdecl;external libX11;
+function XGetInputFocus(para1:PDisplay; para2:PWindow; para3:Pcint):cint;cdecl;external libX11;
+function XGetKeyboardControl(para1:PDisplay; para2:PXKeyboardState):cint;cdecl;external libX11;
+function XGetPointerControl(para1:PDisplay; para2:Pcint; para3:Pcint; para4:Pcint):cint;cdecl;external libX11;
+function XGetPointerMapping(para1:PDisplay; para2:Pcuchar; para3:cint):cint;cdecl;external libX11;
+function XGetScreenSaver(para1:PDisplay; para2:Pcint; para3:Pcint; para4:Pcint; para5:Pcint):cint;cdecl;external libX11;
+function XGetTransientForHint(para1:PDisplay; para2:TWindow; para3:PWindow):TStatus;cdecl;external libX11;
+function XGetWindowProperty(para1:PDisplay; para2:TWindow; para3:TAtom; para4:clong; para5:clong;
+ para6:TBool; para7:TAtom; para8:PAtom; para9:Pcint; para10:Pculong;
+ para11:Pculong; para12:PPcuchar):cint;cdecl;external libX11;
+function XGetWindowAttributes(para1:PDisplay; para2:TWindow; para3:PXWindowAttributes):TStatus;cdecl;external libX11;
+function XGrabButton(para1:PDisplay; para2:cuint; para3:cuint; para4:TWindow; para5:TBool;
+ para6:cuint; para7:cint; para8:cint; para9:TWindow; para10:TCursor):cint;cdecl;external libX11;
+function XGrabKey(para1:PDisplay; para2:cint; para3:cuint; para4:TWindow; para5:TBool;
+ para6:cint; para7:cint):cint;cdecl;external libX11;
+function XGrabKeyboard(para1:PDisplay; para2:TWindow; para3:TBool; para4:cint; para5:cint;
+ para6:TTime):cint;cdecl;external libX11;
+function XGrabPointer(para1:PDisplay; para2:TWindow; para3:TBool; para4:cuint; para5:cint;
+ para6:cint; para7:TWindow; para8:TCursor; para9:TTime):cint;cdecl;external libX11;
+function XGrabServer(para1:PDisplay):cint;cdecl;external libX11;
+function XHeightMMOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XHeightOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XIfEvent(para1:PDisplay; para2:PXEvent; para3:funcifevent; para4:TXPointer):cint;cdecl;external libX11;
+function XImageByteOrder(para1:PDisplay):cint;cdecl;external libX11;
+function XInstallColormap(para1:PDisplay; para2:TColormap):cint;cdecl;external libX11;
+function XKeysymToKeycode(para1:PDisplay; para2:TKeySym):TKeyCode;cdecl;external libX11;
+function XKillClient(para1:PDisplay; para2:TXID):cint;cdecl;external libX11;
+function XLookupColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:PXColor; para5:PXColor):TStatus;cdecl;external libX11;
+function XLowerWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XMapRaised(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XMapSubwindows(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XMapWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XMaskEvent(para1:PDisplay; para2:clong; para3:PXEvent):cint;cdecl;external libX11;
+function XMaxCmapsOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XMinCmapsOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XMoveResizeWindow(para1:PDisplay; para2:TWindow; para3:cint; para4:cint; para5:cuint;
+ para6:cuint):cint;cdecl;external libX11;
+function XMoveWindow(para1:PDisplay; para2:TWindow; para3:cint; para4:cint):cint;cdecl;external libX11;
+function XNextEvent(para1:PDisplay; para2:PXEvent):cint;cdecl;external libX11;
+function XNoOp(para1:PDisplay):cint;cdecl;external libX11;
+function XParseColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:PXColor):TStatus;cdecl;external libX11;
+function XParseGeometry(para1:Pchar; para2:Pcint; para3:Pcint; para4:Pcuint; para5:Pcuint):cint;cdecl;external libX11;
+function XPeekEvent(para1:PDisplay; para2:PXEvent):cint;cdecl;external libX11;
+function XPeekIfEvent(para1:PDisplay; para2:PXEvent; para3:funcifevent; para4:TXPointer):cint;cdecl;external libX11;
+function XPending(para1:PDisplay):cint;cdecl;external libX11;
+function XPlanesOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XProtocolRevision(para1:PDisplay):cint;cdecl;external libX11;
+function XProtocolVersion(para1:PDisplay):cint;cdecl;external libX11;
+function XPutBackEvent(para1:PDisplay; para2:PXEvent):cint;cdecl;external libX11;
+function XPutImage(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXImage; para5:cint;
+ para6:cint; para7:cint; para8:cint; para9:cuint; para10:cuint):cint;cdecl;external libX11;
+function XQLength(para1:PDisplay):cint;cdecl;external libX11;
+function XQueryBestCursor(para1:PDisplay; para2:TDrawable; para3:cuint; para4:cuint; para5:Pcuint;
+ para6:Pcuint):TStatus;cdecl;external libX11;
+function XQueryBestSize(para1:PDisplay; para2:cint; para3:TDrawable; para4:cuint; para5:cuint;
+ para6:Pcuint; para7:Pcuint):TStatus;cdecl;external libX11;
+function XQueryBestStipple(para1:PDisplay; para2:TDrawable; para3:cuint; para4:cuint; para5:Pcuint;
+ para6:Pcuint):TStatus;cdecl;external libX11;
+function XQueryBestTile(para1:PDisplay; para2:TDrawable; para3:cuint; para4:cuint; para5:Pcuint;
+ para6:Pcuint):TStatus;cdecl;external libX11;
+function XQueryColor(para1:PDisplay; para2:TColormap; para3:PXColor):cint;cdecl;external libX11;
+function XQueryColors(para1:PDisplay; para2:TColormap; para3:PXColor; para4:cint):cint;cdecl;external libX11;
+function XQueryExtension(para1:PDisplay; para2:Pchar; para3:Pcint; para4:Pcint; para5:Pcint):TBool;cdecl;external libX11;
+{?}
+function XQueryKeymap(para1:PDisplay; para2:chararr32):cint;cdecl;external libX11;
+function XQueryPointer(para1:PDisplay; para2:TWindow; para3:PWindow; para4:PWindow; para5:Pcint;
+ para6:Pcint; para7:Pcint; para8:Pcint; para9:Pcuint):TBool;cdecl;external libX11;
+function XQueryTextExtents(para1:PDisplay; para2:TXID; para3:Pchar; para4:cint; para5:Pcint;
+ para6:Pcint; para7:Pcint; para8:PXCharStruct):cint;cdecl;external libX11;
+function XQueryTextExtents16(para1:PDisplay; para2:TXID; para3:PXChar2b; para4:cint; para5:Pcint;
+ para6:Pcint; para7:Pcint; para8:PXCharStruct):cint;cdecl;external libX11;
+function XQueryTree(para1:PDisplay; para2:TWindow; para3:PWindow; para4:PWindow; para5:PPWindow;
+ para6:Pcuint):TStatus;cdecl;external libX11;
+function XRaiseWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XReadBitmapFile(para1:PDisplay; para2:TDrawable; para3:Pchar; para4:Pcuint; para5:Pcuint;
+ para6:PPixmap; para7:Pcint; para8:Pcint):cint;cdecl;external libX11;
+function XReadBitmapFileData(para1:Pchar; para2:Pcuint; para3:Pcuint; para4:PPcuchar; para5:Pcint;
+ para6:Pcint):cint;cdecl;external libX11;
+function XRebindKeysym(para1:PDisplay; para2:TKeySym; para3:PKeySym; para4:cint; para5:Pcuchar;
+ para6:cint):cint;cdecl;external libX11;
+function XRecolorCursor(para1:PDisplay; para2:TCursor; para3:PXColor; para4:PXColor):cint;cdecl;external libX11;
+function XRefreshKeyboardMapping(para1:PXMappingEvent):cint;cdecl;external libX11;
+function XRemoveFromSaveSet(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XRemoveHost(para1:PDisplay; para2:PXHostAddress):cint;cdecl;external libX11;
+function XRemoveHosts(para1:PDisplay; para2:PXHostAddress; para3:cint):cint;cdecl;external libX11;
+function XReparentWindow(para1:PDisplay; para2:TWindow; para3:TWindow; para4:cint; para5:cint):cint;cdecl;external libX11;
+function XResetScreenSaver(para1:PDisplay):cint;cdecl;external libX11;
+function XResizeWindow(para1:PDisplay; para2:TWindow; para3:cuint; para4:cuint):cint;cdecl;external libX11;
+function XRestackWindows(para1:PDisplay; para2:PWindow; para3:cint):cint;cdecl;external libX11;
+function XRotateBuffers(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XRotateWindowProperties(para1:PDisplay; para2:TWindow; para3:PAtom; para4:cint; para5:cint):cint;cdecl;external libX11;
+function XScreenCount(para1:PDisplay):cint;cdecl;external libX11;
+function XSelectInput(para1:PDisplay; para2:TWindow; para3:clong):cint;cdecl;external libX11;
+function XSendEvent(para1:PDisplay; para2:TWindow; para3:TBool; para4:clong; para5:PXEvent):TStatus;cdecl;external libX11;
+function XSetAccessControl(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XSetArcMode(para1:PDisplay; para2:TGC; para3:cint):cint;cdecl;external libX11;
+function XSetBackground(para1:PDisplay; para2:TGC; para3:culong):cint;cdecl;external libX11;
+function XSetClipMask(para1:PDisplay; para2:TGC; para3:TPixmap):cint;cdecl;external libX11;
+function XSetClipOrigin(para1:PDisplay; para2:TGC; para3:cint; para4:cint):cint;cdecl;external libX11;
+function XSetClipRectangles(para1:PDisplay; para2:TGC; para3:cint; para4:cint; para5:PXRectangle;
+ para6:cint; para7:cint):cint;cdecl;external libX11;
+function XSetCloseDownMode(para1:PDisplay; para2:cint):cint;cdecl;external libX11;
+function XSetCommand(para1:PDisplay; para2:TWindow; para3:PPchar; para4:cint):cint;cdecl;external libX11;
+function XSetDashes(para1:PDisplay; para2:TGC; para3:cint; para4:Pchar; para5:cint):cint;cdecl;external libX11;
+function XSetFillRule(para1:PDisplay; para2:TGC; para3:cint):cint;cdecl;external libX11;
+function XSetFillStyle(para1:PDisplay; para2:TGC; para3:cint):cint;cdecl;external libX11;
+function XSetFont(para1:PDisplay; para2:TGC; para3:TFont):cint;cdecl;external libX11;
+function XSetFontPath(para1:PDisplay; para2:PPchar; para3:cint):cint;cdecl;external libX11;
+function XSetForeground(para1:PDisplay; para2:TGC; para3:culong):cint;cdecl;external libX11;
+function XSetFunction(para1:PDisplay; para2:TGC; para3:cint):cint;cdecl;external libX11;
+function XSetGraphicsExposures(para1:PDisplay; para2:TGC; para3:TBool):cint;cdecl;external libX11;
+function XSetIconName(para1:PDisplay; para2:TWindow; para3:Pchar):cint;cdecl;external libX11;
+function XSetInputFocus(para1:PDisplay; para2:TWindow; para3:cint; para4:TTime):cint;cdecl;external libX11;
+function XSetLineAttributes(para1:PDisplay; para2:TGC; para3:cuint; para4:cint; para5:cint;
+ para6:cint):cint;cdecl;external libX11;
+function XSetModifierMapping(para1:PDisplay; para2:PXModifierKeymap):cint;cdecl;external libX11;
+function XSetPlaneMask(para1:PDisplay; para2:TGC; para3:culong):cint;cdecl;external libX11;
+function XSetPointerMapping(para1:PDisplay; para2:Pcuchar; para3:cint):cint;cdecl;external libX11;
+function XSetScreenSaver(para1:PDisplay; para2:cint; para3:cint; para4:cint; para5:cint):cint;cdecl;external libX11;
+function XSetSelectionOwner(para1:PDisplay; para2:TAtom; para3:TWindow; para4:TTime):cint;cdecl;external libX11;
+function XSetState(para1:PDisplay; para2:TGC; para3:culong; para4:culong; para5:cint;
+ para6:culong):cint;cdecl;external libX11;
+function XSetStipple(para1:PDisplay; para2:TGC; para3:TPixmap):cint;cdecl;external libX11;
+function XSetSubwindowMode(para1:PDisplay; para2:TGC; para3:cint):cint;cdecl;external libX11;
+function XSetTSOrigin(para1:PDisplay; para2:TGC; para3:cint; para4:cint):cint;cdecl;external libX11;
+function XSetTile(para1:PDisplay; para2:TGC; para3:TPixmap):cint;cdecl;external libX11;
+function XSetWindowBackground(para1:PDisplay; para2:TWindow; para3:culong):cint;cdecl;external libX11;
+function XSetWindowBackgroundPixmap(para1:PDisplay; para2:TWindow; para3:TPixmap):cint;cdecl;external libX11;
+function XSetWindowBorder(para1:PDisplay; para2:TWindow; para3:culong):cint;cdecl;external libX11;
+function XSetWindowBorderPixmap(para1:PDisplay; para2:TWindow; para3:TPixmap):cint;cdecl;external libX11;
+function XSetWindowBorderWidth(para1:PDisplay; para2:TWindow; para3:cuint):cint;cdecl;external libX11;
+function XSetWindowColormap(para1:PDisplay; para2:TWindow; para3:TColormap):cint;cdecl;external libX11;
+function XStoreBuffer(para1:PDisplay; para2:Pchar; para3:cint; para4:cint):cint;cdecl;external libX11;
+function XStoreBytes(para1:PDisplay; para2:Pchar; para3:cint):cint;cdecl;external libX11;
+function XStoreColor(para1:PDisplay; para2:TColormap; para3:PXColor):cint;cdecl;external libX11;
+function XStoreColors(para1:PDisplay; para2:TColormap; para3:PXColor; para4:cint):cint;cdecl;external libX11;
+function XStoreName(para1:PDisplay; para2:TWindow; para3:Pchar):cint;cdecl;external libX11;
+function XStoreNamedColor(para1:PDisplay; para2:TColormap; para3:Pchar; para4:culong; para5:cint):cint;cdecl;external libX11;
+function XSync(para1:PDisplay; para2:TBool):cint;cdecl;external libX11;
+function XTextExtents(para1:PXFontStruct; para2:Pchar; para3:cint; para4:Pcint; para5:Pcint;
+ para6:Pcint; para7:PXCharStruct):cint;cdecl;external libX11;
+function XTextExtents16(para1:PXFontStruct; para2:PXChar2b; para3:cint; para4:Pcint; para5:Pcint;
+ para6:Pcint; para7:PXCharStruct):cint;cdecl;external libX11;
+function XTextWidth(para1:PXFontStruct; para2:Pchar; para3:cint):cint;cdecl;external libX11;
+function XTextWidth16(para1:PXFontStruct; para2:PXChar2b; para3:cint):cint;cdecl;external libX11;
+function XTranslateCoordinates(para1:PDisplay; para2:TWindow; para3:TWindow; para4:cint; para5:cint;
+ para6:Pcint; para7:Pcint; para8:PWindow):TBool;cdecl;external libX11;
+function XUndefineCursor(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XUngrabButton(para1:PDisplay; para2:cuint; para3:cuint; para4:TWindow):cint;cdecl;external libX11;
+function XUngrabKey(para1:PDisplay; para2:cint; para3:cuint; para4:TWindow):cint;cdecl;external libX11;
+function XUngrabKeyboard(para1:PDisplay; para2:TTime):cint;cdecl;external libX11;
+function XUngrabPointer(para1:PDisplay; para2:TTime):cint;cdecl;external libX11;
+function XUngrabServer(para1:PDisplay):cint;cdecl;external libX11;
+function XUninstallColormap(para1:PDisplay; para2:TColormap):cint;cdecl;external libX11;
+function XUnloadFont(para1:PDisplay; para2:TFont):cint;cdecl;external libX11;
+function XUnmapSubwindows(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XUnmapWindow(para1:PDisplay; para2:TWindow):cint;cdecl;external libX11;
+function XVendorRelease(para1:PDisplay):cint;cdecl;external libX11;
+function XWarpPointer(para1:PDisplay; para2:TWindow; para3:TWindow; para4:cint; para5:cint;
+ para6:cuint; para7:cuint; para8:cint; para9:cint):cint;cdecl;external libX11;
+function XWidthMMOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XWidthOfScreen(para1:PScreen):cint;cdecl;external libX11;
+function XWindowEvent(para1:PDisplay; para2:TWindow; para3:clong; para4:PXEvent):cint;cdecl;external libX11;
+function XWriteBitmapFile(para1:PDisplay; para2:Pchar; para3:TPixmap; para4:cuint; para5:cuint;
+ para6:cint; para7:cint):cint;cdecl;external libX11;
+function XSupportsLocale:TBool;cdecl;external libX11;
+function XSetLocaleModifiers(para1:Pchar):Pchar;cdecl;external libX11;
+function XOpenOM(para1:PDisplay; para2:PXrmHashBucketRec; para3:Pchar; para4:Pchar):TXOM;cdecl;external libX11;
+function XCloseOM(para1:TXOM):TStatus;cdecl;external libX11;
+function XSetOMValues(para1:TXOM; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XGetOMValues(para1:TXOM; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XDisplayOfOM(para1:TXOM):PDisplay;cdecl;external libX11;
+function XLocaleOfOM(para1:TXOM):Pchar;cdecl;external libX11;
+function XCreateOC(para1:TXOM; dotdotdot:array of const):TXOC;cdecl;external libX11;
+procedure XDestroyOC(para1:TXOC);cdecl;external libX11;
+function XOMOfOC(para1:TXOC):TXOM;cdecl;external libX11;
+function XSetOCValues(para1:TXOC; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XGetOCValues(para1:TXOC; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XCreateFontSet(para1:PDisplay; para2:Pchar; para3:PPPchar; para4:Pcint; para5:PPchar):TXFontSet;cdecl;external libX11;
+procedure XFreeFontSet(para1:PDisplay; para2:TXFontSet);cdecl;external libX11;
+function XFontsOfFontSet(para1:TXFontSet; para2:PPPXFontStruct; para3:PPPchar):cint;cdecl;external libX11;
+function XBaseFontNameListOfFontSet(para1:TXFontSet):Pchar;cdecl;external libX11;
+function XLocaleOfFontSet(para1:TXFontSet):Pchar;cdecl;external libX11;
+function XContextDependentDrawing(para1:TXFontSet):TBool;cdecl;external libX11;
+function XDirectionalDependentDrawing(para1:TXFontSet):TBool;cdecl;external libX11;
+function XContextualDrawing(para1:TXFontSet):TBool;cdecl;external libX11;
+function XExtentsOfFontSet(para1:TXFontSet):PXFontSetExtents;cdecl;external libX11;
+function XmbTextEscapement(para1:TXFontSet; para2:Pchar; para3:cint):cint;cdecl;external libX11;
+function XwcTextEscapement(para1:TXFontSet; para2:PWideChar; para3:cint):cint;cdecl;external libX11;
+function Xutf8TextEscapement(para1:TXFontSet; para2:Pchar; para3:cint):cint;cdecl;external libX11;
+function XmbTextExtents(para1:TXFontSet; para2:Pchar; para3:cint; para4:PXRectangle; para5:PXRectangle):cint;cdecl;external libX11;
+function XwcTextExtents(para1:TXFontSet; para2:PWideChar; para3:cint; para4:PXRectangle; para5:PXRectangle):cint;cdecl;external libX11;
+function Xutf8TextExtents(para1:TXFontSet; para2:Pchar; para3:cint; para4:PXRectangle; para5:PXRectangle):cint;cdecl;external libX11;
+function XmbTextPerCharExtents(para1:TXFontSet; para2:Pchar; para3:cint; para4:PXRectangle; para5:PXRectangle;
+ para6:cint; para7:Pcint; para8:PXRectangle; para9:PXRectangle):TStatus;cdecl;external libX11;
+function XwcTextPerCharExtents(para1:TXFontSet; para2:PWideChar; para3:cint; para4:PXRectangle; para5:PXRectangle;
+ para6:cint; para7:Pcint; para8:PXRectangle; para9:PXRectangle):TStatus;cdecl;external libX11;
+function Xutf8TextPerCharExtents(para1:TXFontSet; para2:Pchar; para3:cint; para4:PXRectangle; para5:PXRectangle;
+ para6:cint; para7:Pcint; para8:PXRectangle; para9:PXRectangle):TStatus;cdecl;external libX11;
+procedure XmbDrawText(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXmbTextItem; para7:cint);cdecl;external libX11;
+procedure XwcDrawText(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXwcTextItem; para7:cint);cdecl;external libX11;
+procedure Xutf8DrawText(para1:PDisplay; para2:TDrawable; para3:TGC; para4:cint; para5:cint;
+ para6:PXmbTextItem; para7:cint);cdecl;external libX11;
+procedure XmbDrawString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:Pchar; para8:cint);cdecl;external libX11;
+procedure XwcDrawString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:PWideChar; para8:cint);cdecl;external libX11;
+procedure Xutf8DrawString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:Pchar; para8:cint);cdecl;external libX11;
+procedure XmbDrawImageString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:Pchar; para8:cint);cdecl;external libX11;
+procedure XwcDrawImageString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:PWideChar; para8:cint);cdecl;external libX11;
+procedure Xutf8DrawImageString(para1:PDisplay; para2:TDrawable; para3:TXFontSet; para4:TGC; para5:cint;
+ para6:cint; para7:Pchar; para8:cint);cdecl;external libX11;
+function XOpenIM(para1:PDisplay; para2:PXrmHashBucketRec; para3:Pchar; para4:Pchar):TXIM;cdecl;external libX11;
+function XCloseIM(para1:TXIM):TStatus;cdecl;external libX11;
+function XGetIMValues(para1:TXIM; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XSetIMValues(para1:TXIM; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XDisplayOfIM(para1:TXIM):PDisplay;cdecl;external libX11;
+function XLocaleOfIM(para1:TXIM):Pchar;cdecl;external libX11;
+function XCreateIC(para1:TXIM; dotdotdot:array of const):TXIC;cdecl;external libX11;
+procedure XDestroyIC(para1:TXIC);cdecl;external libX11;
+procedure XSetICFocus(para1:TXIC);cdecl;external libX11;
+procedure XUnsetICFocus(para1:TXIC);cdecl;external libX11;
+function XwcResetIC(para1:TXIC):PWideChar;cdecl;external libX11;
+function XmbResetIC(para1:TXIC):Pchar;cdecl;external libX11;
+function Xutf8ResetIC(para1:TXIC):Pchar;cdecl;external libX11;
+function XSetICValues(para1:TXIC; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XGetICValues(para1:TXIC; dotdotdot:array of const):Pchar;cdecl;external libX11;
+function XIMOfIC(para1:TXIC):TXIM;cdecl;external libX11;
+function XFilterEvent(para1:PXEvent; para2:TWindow):TBool;cdecl;external libX11;
+function XmbLookupString(para1:TXIC; para2:PXKeyPressedEvent; para3:Pchar; para4:cint; para5:PKeySym;
+ para6:PStatus):cint;cdecl;external libX11;
+function XwcLookupString(para1:TXIC; para2:PXKeyPressedEvent; para3:PWideChar; para4:cint; para5:PKeySym;
+ para6:PStatus):cint;cdecl;external libX11;
+function Xutf8LookupString(para1:TXIC; para2:PXKeyPressedEvent; para3:Pchar; para4:cint; para5:PKeySym;
+ para6:PStatus):cint;cdecl;external libX11;
+function XVaCreateNestedList(unused:cint; dotdotdot:array of const):TXVaNestedList;cdecl;external libX11;
+function XRegisterIMInstantiateCallback(para1:PDisplay; para2:PXrmHashBucketRec; para3:Pchar; para4:Pchar; para5:TXIDProc;
+ para6:TXPointer):TBool;cdecl;external libX11;
+function XUnregisterIMInstantiateCallback(para1:PDisplay; para2:PXrmHashBucketRec; para3:Pchar; para4:Pchar; para5:TXIDProc;
+ para6:TXPointer):TBool;cdecl;external libX11;
+type
+ TXConnectionWatchProc = procedure (para1:PDisplay; para2:TXPointer; para3:cint; para4:TBool; para5:PXPointer);cdecl;
+
+function XInternalConnectionNumbers(para1:PDisplay; para2:PPcint; para3:Pcint):TStatus;cdecl;external libX11;
+procedure XProcessInternalConnection(para1:PDisplay; para2:cint);cdecl;external libX11;
+function XAddConnectionWatch(para1:PDisplay; para2:TXConnectionWatchProc; para3:TXPointer):TStatus;cdecl;external libX11;
+procedure XRemoveConnectionWatch(para1:PDisplay; para2:TXConnectionWatchProc; para3:TXPointer);cdecl;external libX11;
+procedure XSetAuthorization(para1:Pchar; para2:cint; para3:Pchar; para4:cint);cdecl;external libX11;
+
+{
+ _Xmbtowc?
+ _Xwctomb?
+}
+
+{$ifdef MACROS}
+function ConnectionNumber(dpy : PDisplay) : cint;
+function RootWindow(dpy : PDisplay; scr : cint) : TWindow;
+function DefaultScreen(dpy : PDisplay) : cint;
+function DefaultRootWindow(dpy : PDisplay) : TWindow;
+function DefaultVisual(dpy : PDisplay; scr : cint) : PVisual;
+function DefaultGC(dpy : PDisplay; scr : cint) : TGC;
+function BlackPixel(dpy : PDisplay; scr : cint) : culong;
+function WhitePixel(dpy : PDisplay; scr : cint) : culong;
+function QLength(dpy : PDisplay) : cint;
+function DisplayWidth(dpy : PDisplay; scr : cint) : cint;
+function DisplayHeight(dpy : PDisplay; scr : cint) : cint;
+function DisplayWidthMM(dpy : PDisplay; scr : cint) : cint;
+function DisplayHeightMM(dpy : PDisplay; scr : cint) : cint;
+function DisplayPlanes(dpy : PDisplay; scr : cint) : cint;
+function DisplayCells(dpy : PDisplay; scr : cint) : cint;
+function ScreenCount(dpy : PDisplay) : cint;
+function ServerVendor(dpy : PDisplay) : Pchar;
+function ProtocolVersion(dpy : PDisplay) : cint;
+function ProtocolRevision(dpy : PDisplay) : cint;
+function VendorRelease(dpy : PDisplay) : cint;
+function DisplayString(dpy : PDisplay) : Pchar;
+function DefaultDepth(dpy : PDisplay; scr : cint) : cint;
+function DefaultColormap(dpy : PDisplay; scr : cint) : TColormap;
+function BitmapUnit(dpy : PDisplay) : cint;
+function BitmapBitOrder(dpy : PDisplay) : cint;
+function BitmapPad(dpy : PDisplay) : cint;
+function ImageByteOrder(dpy : PDisplay) : cint;
+function NextRequest(dpy : PDisplay) : culong;
+function LastKnownRequestProcessed(dpy : PDisplay) : culong;
+function ScreenOfDisplay(dpy : PDisplay; scr : cint) : PScreen;
+function DefaultScreenOfDisplay(dpy : PDisplay) : PScreen;
+function DisplayOfScreen(s : PScreen) : PDisplay;
+function RootWindowOfScreen(s : PScreen) : TWindow;
+function BlackPixelOfScreen(s : PScreen) : culong;
+function WhitePixelOfScreen(s : PScreen) : culong;
+function DefaultColormapOfScreen(s : PScreen) : TColormap;
+function DefaultDepthOfScreen(s : PScreen) : cint;
+function DefaultGCOfScreen(s : PScreen) : TGC;
+function DefaultVisualOfScreen(s : PScreen) : PVisual;
+function WidthOfScreen(s : PScreen) : cint;
+function HeightOfScreen(s : PScreen) : cint;
+function WidthMMOfScreen(s : PScreen) : cint;
+function HeightMMOfScreen(s : PScreen) : cint;
+function PlanesOfScreen(s : PScreen) : cint;
+function CellsOfScreen(s : PScreen) : cint;
+function MinCmapsOfScreen(s : PScreen) : cint;
+function MaxCmapsOfScreen(s : PScreen) : cint;
+function DoesSaveUnders(s : PScreen) : TBool;
+function DoesBackingStore(s : PScreen) : cint;
+function EventMaskOfScreen(s : PScreen) : clong;
+function XAllocID(dpy : PDisplay) : TXID;
+{$endif MACROS}
+
+implementation
+
+{$ifdef MACROS}
+function ConnectionNumber(dpy : PDisplay) : cint;
+begin
+ ConnectionNumber:=(PXPrivDisplay(dpy))^.fd;
+end;
+
+function RootWindow(dpy : PDisplay; scr : cint) : TWindow;
+begin
+ RootWindow:=(ScreenOfDisplay(dpy,scr))^.root;
+end;
+
+function DefaultScreen(dpy : PDisplay) : cint;
+begin
+ DefaultScreen:=(PXPrivDisplay(dpy))^.default_screen;
+end;
+
+function DefaultRootWindow(dpy : PDisplay) : TWindow;
+begin
+ DefaultRootWindow:=(ScreenOfDisplay(dpy,DefaultScreen(dpy)))^.root;
+end;
+
+function DefaultVisual(dpy : PDisplay; scr : cint) : PVisual;
+begin
+ DefaultVisual:=(ScreenOfDisplay(dpy,scr))^.root_visual;
+end;
+
+function DefaultGC(dpy : PDisplay; scr : cint) : TGC;
+begin
+ DefaultGC:=(ScreenOfDisplay(dpy,scr))^.default_gc;
+end;
+
+function BlackPixel(dpy : PDisplay; scr : cint) : culong;
+begin
+ BlackPixel:=(ScreenOfDisplay(dpy,scr))^.black_pixel;
+end;
+
+function WhitePixel(dpy : PDisplay; scr : cint) : culong;
+begin
+ WhitePixel:=(ScreenOfDisplay(dpy,scr))^.white_pixel;
+end;
+
+function QLength(dpy : PDisplay) : cint;
+begin
+ QLength:=(PXPrivDisplay(dpy))^.qlen;
+end;
+
+function DisplayWidth(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayWidth:=(ScreenOfDisplay(dpy,scr))^.width;
+end;
+
+function DisplayHeight(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayHeight:=(ScreenOfDisplay(dpy,scr))^.height;
+end;
+
+function DisplayWidthMM(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayWidthMM:=(ScreenOfDisplay(dpy,scr))^.mwidth;
+end;
+
+function DisplayHeightMM(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayHeightMM:=(ScreenOfDisplay(dpy,scr))^.mheight;
+end;
+
+function DisplayPlanes(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayPlanes:=(ScreenOfDisplay(dpy,scr))^.root_depth;
+end;
+
+function DisplayCells(dpy : PDisplay; scr : cint) : cint;
+begin
+ DisplayCells:=(DefaultVisual(dpy,scr))^.map_entries;
+end;
+
+function ScreenCount(dpy : PDisplay) : cint;
+begin
+ ScreenCount:=(PXPrivDisplay(dpy))^.nscreens;
+end;
+
+function ServerVendor(dpy : PDisplay) : Pchar;
+begin
+ ServerVendor:=(PXPrivDisplay(dpy))^.vendor;
+end;
+
+function ProtocolVersion(dpy : PDisplay) : cint;
+begin
+ ProtocolVersion:=(PXPrivDisplay(dpy))^.proto_major_version;
+end;
+
+function ProtocolRevision(dpy : PDisplay) : cint;
+begin
+ ProtocolRevision:=(PXPrivDisplay(dpy))^.proto_minor_version;
+end;
+
+function VendorRelease(dpy : PDisplay) : cint;
+begin
+ VendorRelease:=(PXPrivDisplay(dpy))^.release;
+end;
+
+function DisplayString(dpy : PDisplay) : Pchar;
+begin
+ DisplayString:=(PXPrivDisplay(dpy))^.display_name;
+end;
+
+function DefaultDepth(dpy : PDisplay; scr : cint) : cint;
+begin
+ DefaultDepth:=(ScreenOfDisplay(dpy,scr))^.root_depth;
+end;
+
+function DefaultColormap(dpy : PDisplay; scr : cint) : TColormap;
+begin
+ DefaultColormap:=(ScreenOfDisplay(dpy,scr))^.cmap;
+end;
+
+function BitmapUnit(dpy : PDisplay) : cint;
+begin
+ BitmapUnit:=(PXPrivDisplay(dpy))^.bitmap_unit;
+end;
+
+function BitmapBitOrder(dpy : PDisplay) : cint;
+begin
+ BitmapBitOrder:=(PXPrivDisplay(dpy))^.bitmap_bit_order;
+end;
+
+function BitmapPad(dpy : PDisplay) : cint;
+begin
+ BitmapPad:=(PXPrivDisplay(dpy))^.bitmap_pad;
+end;
+
+function ImageByteOrder(dpy : PDisplay) : cint;
+begin
+ ImageByteOrder:=(PXPrivDisplay(dpy))^.byte_order;
+end;
+
+function NextRequest(dpy : PDisplay) : culong;
+begin
+ NextRequest:=((PXPrivDisplay(dpy))^.request) + 1;
+end;
+
+function LastKnownRequestProcessed(dpy : PDisplay) : culong;
+begin
+ LastKnownRequestProcessed:=(PXPrivDisplay(dpy))^.last_request_read;
+end;
+
+function ScreenOfDisplay(dpy : PDisplay; scr : cint) : PScreen;
+begin
+ ScreenOfDisplay:=@(((PXPrivDisplay(dpy))^.screens)[scr]);
+end;
+
+function DefaultScreenOfDisplay(dpy : PDisplay) : PScreen;
+begin
+ DefaultScreenOfDisplay:=ScreenOfDisplay(dpy,DefaultScreen(dpy));
+end;
+
+function DisplayOfScreen(s : PScreen) : PDisplay;
+begin
+ DisplayOfScreen:=s^.display;
+end;
+
+function RootWindowOfScreen(s : PScreen) : TWindow;
+begin
+ RootWindowOfScreen:=s^.root;
+end;
+
+function BlackPixelOfScreen(s : PScreen) : culong;
+begin
+ BlackPixelOfScreen:=s^.black_pixel;
+end;
+
+function WhitePixelOfScreen(s : PScreen) : culong;
+begin
+ WhitePixelOfScreen:=s^.white_pixel;
+end;
+
+function DefaultColormapOfScreen(s : PScreen) : TColormap;
+begin
+ DefaultColormapOfScreen:=s^.cmap;
+end;
+
+function DefaultDepthOfScreen(s : PScreen) : cint;
+begin
+ DefaultDepthOfScreen:=s^.root_depth;
+end;
+
+function DefaultGCOfScreen(s : PScreen) : TGC;
+begin
+ DefaultGCOfScreen:=s^.default_gc;
+end;
+
+function DefaultVisualOfScreen(s : PScreen) : PVisual;
+begin
+ DefaultVisualOfScreen:=s^.root_visual;
+end;
+
+function WidthOfScreen(s : PScreen) : cint;
+begin
+ WidthOfScreen:=s^.width;
+end;
+
+function HeightOfScreen(s : PScreen) : cint;
+begin
+ HeightOfScreen:=s^.height;
+end;
+
+function WidthMMOfScreen(s : PScreen) : cint;
+begin
+ WidthMMOfScreen:=s^.mwidth;
+end;
+
+function HeightMMOfScreen(s : PScreen) : cint;
+begin
+ HeightMMOfScreen:=s^.mheight;
+end;
+
+function PlanesOfScreen(s : PScreen) : cint;
+begin
+ PlanesOfScreen:=s^.root_depth;
+end;
+
+function CellsOfScreen(s : PScreen) : cint;
+begin
+ CellsOfScreen:=(DefaultVisualOfScreen(s))^.map_entries;
+end;
+
+function MinCmapsOfScreen(s : PScreen) : cint;
+begin
+ MinCmapsOfScreen:=s^.min_maps;
+end;
+
+function MaxCmapsOfScreen(s : PScreen) : cint;
+begin
+ MaxCmapsOfScreen:=s^.max_maps;
+end;
+
+function DoesSaveUnders(s : PScreen) : TBool;
+begin
+ DoesSaveUnders:=s^.save_unders;
+end;
+
+function DoesBackingStore(s : PScreen) : cint;
+begin
+ DoesBackingStore:=s^.backing_store;
+end;
+
+function EventMaskOfScreen(s : PScreen) : clong;
+begin
+ EventMaskOfScreen:=s^.root_input_mask;
+end;
+
+function XAllocID(dpy : PDisplay) : TXID;
+begin
+ XAllocID:=(PXPrivDisplay(dpy))^.resource_alloc(dpy);
+end;
+{$endif MACROS}
+
+
+end.
diff --git a/packages/x11/src/xrandr.pp b/packages/x11/src/xrandr.pp
new file mode 100644
index 0000000000..3f173cb93d
--- /dev/null
+++ b/packages/x11/src/xrandr.pp
@@ -0,0 +1,200 @@
+{
+ $XFree86: xc/lib/Xrandr/Xrandr.h,v 1.9 2002/09/29 23:39:44 keithp Exp $
+
+ Copyright (C) 2000 Compaq Computer Corporation, Inc.
+ Copyright (C) 2002 Hewlett-Packard Company, Inc.
+
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation, and that the name of Compaq not be used in advertising or
+ publicity pertaining to distribution of the software without specific,
+ written prior permission. HP makes no representations about the
+ suitability of this software for any purpose. It is provided "as is"
+ without express or implied warranty.
+
+ HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL COMPAQ
+ BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Jim Gettys, HP Labs, HP.
+}
+
+unit xrandr;
+
+interface
+
+{$PACKRECORDS c}
+
+uses
+ ctypes, x, xlib;
+
+const
+ libXrandr = 'Xrandr';
+
+{$I randr.inc}
+
+type
+ PXRRScreenSize = ^TXRRScreenSize;
+ TXRRScreenSize = record
+ width, height : cint;
+ mwidth, mheight : cint;
+ end;
+
+{
+ Events.
+}
+
+ TXRRScreenChangeNotifyEvent = record
+ _type : cint; { event base }
+ serial : culong; { # of last request processed by server }
+ send_event : TBool; { true if this came from a SendEvent request }
+ display : PDisplay; { Display the event was read from }
+ window : TWindow; { window which selected for this event }
+ root : TWindow; { Root window for changed screen }
+ timestamp : TTime; { when the screen change occurred }
+ config_timestamp : TTime; { when the last configuration change }
+ size_index : TSizeID;
+ subpixel_order : TSubpixelOrder;
+ rotation : TRotation;
+ width : cint;
+ height : cint;
+ mwidth : cint;
+ mheight : cint;
+ end;
+
+
+{ internal representation is private to the library }
+ PXRRScreenConfiguration = ^TXRRScreenConfiguration;
+ TXRRScreenConfiguration = record end;
+
+function XRRQueryExtension(
+ dpy : PDisplay;
+ event_basep,
+ error_basep : Pcint) : TBool; cdecl; external libXrandr;
+
+function XRRQueryVersion(
+ dpy : PDisplay;
+ major_versionp : Pcint;
+ minor_versionp : Pcint) : TStatus; cdecl; external libXrandr;
+
+function XRRGetScreenInfo(
+ dpy : PDisplay;
+ draw : TDrawable) : PXRRScreenConfiguration; cdecl; external libXrandr;
+
+procedure XRRFreeScreenConfigInfo(
+ config : PXRRScreenConfiguration); cdecl; external libXrandr;
+
+{
+ Note that screen configuration changes are only permitted if the client can
+ prove it has up to date configuration information. We are trying to
+ insist that it become possible for screens to change dynamically, so
+ we want to ensure the client knows what it is talking about when requesting
+ changes.
+}
+function XRRSetScreenConfig(
+ dpy : PDisplay;
+ config : PXRRScreenConfiguration;
+ draw : TDrawable;
+ size_index : cint;
+ rotation : TRotation;
+ timestamp : TTime) : TStatus; cdecl; external libXrandr;
+
+{ added in v1.1, sorry for the lame name }
+function XRRSetScreenConfigAndRate(
+ dpy : PDisplay;
+ config : PXRRScreenConfiguration;
+ draw : TDrawable;
+ size_index : cint;
+ rotation : TRotation;
+ rate : cshort;
+ timestamp : TTime) : TStatus; cdecl; external libXrandr;
+
+
+function XRRConfigRotations(
+ config : PXRRScreenConfiguration;
+ current_rotation : PRotation) : TRotation; cdecl; external libXrandr;
+
+function XRRConfigTimes(
+ config : PXRRScreenConfiguration;
+ config_timestamp : PTime) : TTime; cdecl; external libXrandr;
+
+function XRRConfigSizes(
+ config : PXRRScreenConfiguration;
+ nsizes : Pcint) : PXRRScreenSize; cdecl; external libXrandr;
+
+function XRRConfigRates(
+ config : PXRRScreenConfiguration;
+ sizeID : cint;
+ nrates : Pcint) : Pcshort; cdecl; external libXrandr;
+
+function XRRConfigCurrentConfiguration(
+ config : PXRRScreenConfiguration;
+ rotation : PRotation) : TSizeID; cdecl; external libXrandr;
+
+function XRRConfigCurrentRate(
+ config : PXRRScreenConfiguration) : cshort; cdecl; external libXrandr;
+
+function XRRRootToScreen(
+ dpy : PDisplay;
+ root : TWindow) : cint; cdecl; external libXrandr;
+
+{
+ returns the screen configuration for the specified screen; does a lazy
+ evalution to delay getting the information, and caches the result.
+ These routines should be used in preference to XRRGetScreenInfo
+ to avoid unneeded round trips to the X server. These are new
+ in protocol version 0.1.
+}
+
+
+function XRRScreenConfig(
+ dpy : PDisplay;
+ screen : cint) : PXRRScreenConfiguration; cdecl; external libXrandr;
+function XRRConfig(
+ screen : PScreen) : PXRRScreenConfiguration; cdecl; external libXrandr;
+procedure XRRSelectInput(
+ dpy : PDisplay;
+ window : TWindow;
+ mask : cint); cdecl; external libXrandr;
+
+{
+ the following are always safe to call, even if RandR is not implemented
+ on a screen
+}
+
+
+function XRRRotations(
+ dpy : PDisplay;
+ screen : cint;
+ current_rotation : PRotation) : TRotation; cdecl; external libXrandr;
+function XRRSizes(
+ dpy : PDisplay;
+ screen : cint;
+ nsizes : Pcint) : PXRRScreenSize; cdecl; external libXrandr;
+function XRRRates(
+ dpy : PDisplay;
+ screen : cint;
+ sizeID : cint;
+ nrates : Pcint) : Pcshort; cdecl; external libXrandr;
+function XRRTimes(
+ dpy : PDisplay;
+ screen : cint;
+ config_timestamp : PTime) : TTime; cdecl; external libXrandr;
+
+
+{
+ intended to take RRScreenChangeNotify, or
+ ConfigureNotify (on the root window)
+ returns 1 if it is an event type it understands, 0 if not
+}
+function XRRUpdateConfiguration(
+ event : PXEvent) : cint; cdecl; external libXrandr;
+
+implementation
+
+end.
diff --git a/packages/x11/src/xrender.pp b/packages/x11/src/xrender.pp
new file mode 100644
index 0000000000..5e16f619c7
--- /dev/null
+++ b/packages/x11/src/xrender.pp
@@ -0,0 +1,233 @@
+unit xrender;
+interface
+uses
+ x,xlib;
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from xrender.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xrender.h
+}
+
+{$PACKRECORDS C}
+
+type
+
+ PGlyph = ^TGlyph;
+ TGlyph = dword;
+
+ PGlyphSet = ^TGlyphSet;
+ TGlyphSet = dword;
+
+ PPicture = ^TPicture;
+ TPicture = dword;
+
+ PPictFormat = ^TPictFormat;
+ TPictFormat = dword;
+
+const
+ RENDER_NAME = 'RENDER';
+ RENDER_MAJOR = 0;
+ RENDER_MINOR = 0;
+ X_RenderQueryVersion = 0;
+ X_RenderQueryPictFormats = 1;
+ X_RenderQueryPictIndexValues = 2;
+ X_RenderQueryDithers = 3;
+ X_RenderCreatePicture = 4;
+ X_RenderChangePicture = 5;
+ X_RenderSetPictureClipRectangles = 6;
+ X_RenderFreePicture = 7;
+ X_RenderComposite = 8;
+ X_RenderScale = 9;
+ X_RenderTrapezoids = 10;
+ X_RenderTriangles = 11;
+ X_RenderTriStrip = 12;
+ X_RenderTriFan = 13;
+ X_RenderColorTrapezoids = 14;
+ X_RenderColorTriangles = 15;
+ X_RenderTransform = 16;
+ X_RenderCreateGlyphSet = 17;
+ X_RenderReferenceGlyphSet = 18;
+ X_RenderFreeGlyphSet = 19;
+ X_RenderAddGlyphs = 20;
+ X_RenderAddGlyphsFromPicture = 21;
+ X_RenderFreeGlyphs = 22;
+ X_RenderCompositeGlyphs8 = 23;
+ X_RenderCompositeGlyphs16 = 24;
+ X_RenderCompositeGlyphs32 = 25;
+ BadPictFormat = 0;
+ BadPicture = 1;
+ BadPictOp = 2;
+ BadGlyphSet = 3;
+ BadGlyph = 4;
+ RenderNumberErrors = BadGlyph + 1;
+ PictTypeIndexed = 0;
+ PictTypeDirect = 1;
+ PictOpClear = 0;
+ PictOpSrc = 1;
+ PictOpDst = 2;
+ PictOpOver = 3;
+ PictOpOverReverse = 4;
+ PictOpIn = 5;
+ PictOpInReverse = 6;
+ PictOpOut = 7;
+ PictOpOutReverse = 8;
+ PictOpAtop = 9;
+ PictOpAtopReverse = 10;
+ PictOpXor = 11;
+ PictOpAdd = 12;
+ PictOpSaturate = 13;
+ PictOpMaximum = 13;
+ PolyEdgeSharp = 0;
+ PolyEdgeSmooth = 1;
+ PolyModePrecise = 0;
+ PolyModeImprecise = 1;
+ CPRepeat = 1 shl 0;
+ CPAlphaMap = 1 shl 1;
+ CPAlphaXOrigin = 1 shl 2;
+ CPAlphaYOrigin = 1 shl 3;
+ CPClipXOrigin = 1 shl 4;
+ CPClipYOrigin = 1 shl 5;
+ CPClipMask = 1 shl 6;
+ CPGraphicsExposure = 1 shl 7;
+ CPSubwindowMode = 1 shl 8;
+ CPPolyEdge = 1 shl 9;
+ CPPolyMode = 1 shl 10;
+ CPDither = 1 shl 11;
+ CPLastBit = 11;
+type
+
+ PXRenderDirectFormat = ^TXRenderDirectFormat;
+ TXRenderDirectFormat = record
+ red : smallint;
+ redMask : smallint;
+ green : smallint;
+ greenMask : smallint;
+ blue : smallint;
+ blueMask : smallint;
+ alpha : smallint;
+ alphaMask : smallint;
+ end;
+
+ PXRenderPictFormat = ^TXRenderPictFormat;
+ TXRenderPictFormat = record
+ id : TPictFormat;
+ _type : longint;
+ depth : longint;
+ direct : TXRenderDirectFormat;
+ colormap : TColormap;
+ end;
+
+const
+ PictFormatID = 1 shl 0;
+ PictFormatType = 1 shl 1;
+ PictFormatDepth = 1 shl 2;
+ PictFormatRed = 1 shl 3;
+ PictFormatRedMask = 1 shl 4;
+ PictFormatGreen = 1 shl 5;
+ PictFormatGreenMask = 1 shl 6;
+ PictFormatBlue = 1 shl 7;
+ PictFormatBlueMask = 1 shl 8;
+ PictFormatAlpha = 1 shl 9;
+ PictFormatAlphaMask = 1 shl 10;
+ PictFormatColormap = 1 shl 11;
+type
+
+ PXRenderVisual = ^TXRenderVisual;
+ TXRenderVisual = record
+ visual : PVisual;
+ format : PXRenderPictFormat;
+ end;
+
+ PXRenderDepth = ^TXRenderDepth;
+ TXRenderDepth = record
+ depth : longint;
+ nvisuals : longint;
+ visuals : PXRenderVisual;
+ end;
+
+ PXRenderScreen = ^TXRenderScreen;
+ TXRenderScreen = record
+ depths : PXRenderDepth;
+ ndepths : longint;
+ fallback : PXRenderPictFormat;
+ end;
+
+ PXRenderInfo = ^TXRenderInfo;
+ TXRenderInfo = record
+ format : PXRenderPictFormat;
+ nformat : longint;
+ screen : PXRenderScreen;
+ nscreen : longint;
+ depth : PXRenderDepth;
+ ndepth : longint;
+ visual : PXRenderVisual;
+ nvisual : longint;
+ end;
+
+ PXRenderPictureAttributes = ^TXRenderPictureAttributes;
+ TXRenderPictureAttributes = record
+ _repeat : TBool;
+ alpha_map : TPicture;
+ alpha_x_origin : longint;
+ alpha_y_origin : longint;
+ clip_x_origin : longint;
+ clip_y_origin : longint;
+ clip_mask : TPixmap;
+ graphics_exposures : TBool;
+ subwindow_mode : longint;
+ poly_edge : longint;
+ poly_mode : longint;
+ dither : TAtom;
+ end;
+
+ PXGlyphInfo = ^TXGlyphInfo;
+ TXGlyphInfo = record
+ width : word;
+ height : word;
+ x : smallint;
+ y : smallint;
+ xOff : smallint;
+ yOff : smallint;
+ end;
+
+function XRenderQueryExtension(dpy:PDisplay; event_basep:Plongint; error_basep:Plongint):TBool;cdecl;external libX11;
+function XRenderQueryVersion(dpy:PDisplay; major_versionp:Plongint; minor_versionp:Plongint):TStatus;cdecl;external libX11;
+function XRenderQueryFormats(dpy:PDisplay):TStatus;cdecl;external libX11;
+function XRenderFindVisualFormat(dpy:PDisplay; visual:PVisual):PXRenderPictFormat;cdecl;external libX11;
+function XRenderFindFormat(dpy:PDisplay; mask:dword; template:PXRenderPictFormat; count:longint):PXRenderPictFormat;cdecl;external libX11;
+function XRenderCreatePicture(dpy:PDisplay; drawable:TDrawable; format:PXRenderPictFormat; valuemask:dword; attributes:PXRenderPictureAttributes):TPicture;cdecl;external libX11;
+procedure XRenderChangePicture(dpy:PDisplay; picture:TPicture; valuemask:dword; attributes:PXRenderPictureAttributes);cdecl;external libX11;
+procedure XRenderFreePicture(dpy:PDisplay; picture:TPicture);cdecl;external libX11;
+procedure XRenderComposite(dpy:PDisplay; op:longint; src:TPicture; mask:TPicture; dst:TPicture;
+ src_x:longint; src_y:longint; mask_x:longint; mask_y:longint; dst_x:longint;
+ dst_y:longint; width:dword; height:dword);cdecl;external libX11;
+function XRenderCreateGlyphSet(dpy:PDisplay; format:PXRenderPictFormat):TGlyphSet;cdecl;external libX11;
+function XRenderReferenceGlyphSet(dpy:PDisplay; existing:TGlyphSet):TGlyphSet;cdecl;external libX11;
+procedure XRenderFreeGlyphSet(dpy:PDisplay; glyphset:TGlyphSet);cdecl;external libX11;
+procedure XRenderAddGlyphs(dpy:PDisplay; glyphset:TGlyphSet; gids:PGlyph; glyphs:PXGlyphInfo; nglyphs:longint;
+ images:Pchar; nbyte_images:longint);cdecl;external libX11;
+procedure XRenderFreeGlyphs(dpy:PDisplay; glyphset:TGlyphSet; gids:PGlyph; nglyphs:longint);cdecl;external libX11;
+procedure XRenderCompositeString8(dpy:PDisplay; op:longint; src:TPicture; dst:TPicture; maskFormat:PXRenderPictFormat;
+ glyphset:TGlyphSet; xSrc:longint; ySrc:longint; xDst:longint; yDst:longint;
+ _string:Pchar; nchar:longint);cdecl;external libX11;
+
+implementation
+
+
+end.
diff --git a/packages/x11/src/xresource.pp b/packages/x11/src/xresource.pp
new file mode 100644
index 0000000000..320d690492
--- /dev/null
+++ b/packages/x11/src/xresource.pp
@@ -0,0 +1,231 @@
+unit xresource; {$DEFINE MACRO}
+interface
+uses
+ x,xlib {$IFDEF MACROS}, strings{$ENDIF};
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from xresource.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xresource.h
+}
+
+{$PACKRECORDS C}
+
+
+function Xpermalloc(para1:dword):Pchar;cdecl;external libX11;
+type
+
+ PXrmQuark = ^TXrmQuark;
+ TXrmQuark = longint;
+ TXrmQuarkList = PXrmQuark;
+ PXrmQuarkList = ^TXrmQuarkList;
+function NULLQUARK : TXrmQuark;
+
+type
+
+ PXrmString = ^TXrmString;
+ TXrmString = ^char;
+
+function NULLSTRING : TXrmString;
+
+function XrmStringToQuark(para1:Pchar):TXrmQuark;cdecl;external libX11;
+function XrmPermStringToQuark(para1:Pchar):TXrmQuark;cdecl;external libX11;
+function XrmQuarkToString(para1:TXrmQuark):TXrmString;cdecl;external libX11;
+function XrmUniqueQuark:TXrmQuark;cdecl;external libX11;
+{$ifdef MACROS}
+function XrmStringsEqual(a1,a2 : pchar) : boolean;
+{$endif MACROS}
+
+type
+
+ PXrmBinding = ^TXrmBinding;
+ TXrmBinding = (XrmBindTightly,XrmBindLoosely);
+ TXrmBindingList = PXrmBinding;
+ PXrmBindingList = ^TXrmBindingList;
+
+procedure XrmStringToQuarkList(para1:Pchar; para2:TXrmQuarkList);cdecl;external libX11;
+procedure XrmStringToBindingQuarkList(para1:Pchar; para2:TXrmBindingList; para3:TXrmQuarkList);cdecl;external libX11;
+type
+
+ PXrmName = ^TXrmName;
+ TXrmName = TXrmQuark;
+
+ PXrmNameList = ^TXrmNameList;
+ TXrmNameList = TXrmQuarkList;
+{$ifdef MACROS}
+function XrmNameToString(name : longint) : TXrmString;
+
+function XrmStringToName(_string : Pchar) : longint;
+
+procedure XrmStringToNameList(str:Pchar; name : PXrmQuark);
+{$endif MACROS}
+
+type
+
+ PXrmClass = ^TXrmClass;
+ TXrmClass = TXrmQuark;
+
+ PXrmClassList = ^TXrmClassList;
+ TXrmClassList = TXrmQuarkList;
+{$ifdef MACROS}
+function XrmClassToString(c_class : longint) : TXrmString;
+
+function XrmStringToClass(c_class : Pchar) : longint;
+
+procedure XrmStringToClassList(str:Pchar; c_class : PXrmQuark);
+{$endif MACROS}
+type
+
+ PXrmRepresentation = ^TXrmRepresentation;
+ TXrmRepresentation = TXrmQuark;
+{$ifdef MACROS}
+function XrmStringToRepresentation(_string : Pchar) : longint;
+
+function XrmRepresentationToString(_type : longint) : TXrmString;
+{$endif MACROS}
+
+type
+
+ PXrmValue = ^TXrmValue;
+ TXrmValue = record
+ size : dword;
+ addr : TXPointer;
+ end;
+ TXrmValuePtr = PXrmValue;
+ PXrmValuePtr = ^TXrmValuePtr;
+
+ PXrmHashBucketRec = ^TXrmHashBucketRec;
+ TXrmHashBucketRec = record
+ end;
+ TXrmHashBucket = PXrmHashBucketRec;
+ PXrmHashBucket = ^TXrmHashBucket;
+
+ PXrmHashTable = ^TXrmHashTable;
+ TXrmHashTable = ^TXrmHashBucket;
+
+ TXrmDatabase = PXrmHashBucketRec;
+ PXrmDatabase = ^TXrmDatabase;
+
+procedure XrmDestroyDatabase(para1:TXrmDatabase);cdecl;external libX11;
+procedure XrmQPutResource(para1:PXrmDatabase; para2:TXrmBindingList; para3:TXrmQuarkList; para4:TXrmRepresentation; para5:PXrmValue);cdecl;external libX11;
+procedure XrmPutResource(para1:PXrmDatabase; para2:Pchar; para3:Pchar; para4:PXrmValue);cdecl;external libX11;
+procedure XrmQPutStringResource(para1:PXrmDatabase; para2:TXrmBindingList; para3:TXrmQuarkList; para4:Pchar);cdecl;external libX11;
+procedure XrmPutStringResource(para1:PXrmDatabase; para2:Pchar; para3:Pchar);cdecl;external libX11;
+procedure XrmPutLineResource(para1:PXrmDatabase; para2:Pchar);cdecl;external libX11;
+function XrmQGetResource(para1:TXrmDatabase; para2:TXrmNameList; para3:TXrmClassList; para4:PXrmRepresentation; para5:PXrmValue):TBool;cdecl;external libX11;
+function XrmGetResource(para1:TXrmDatabase; para2:Pchar; para3:Pchar; para4:PPchar; para5:PXrmValue):TBool;cdecl;external libX11;
+{ There is no definition of TXrmSearchList }
+{function XrmQGetSearchList(para1:TXrmDatabase; para2:TXrmNameList; para3:TXrmClassList; para4:TXrmSearchList; para5:longint):TBool;cdecl;external libX11;
+function XrmQGetSearchResource(para1:TXrmSearchList; para2:TXrmName; para3:TXrmClass; para4:PXrmRepresentation; para5:PXrmValue):TBool;cdecl;external libX11;}
+procedure XrmSetDatabase(para1:PDisplay; para2:TXrmDatabase);cdecl;external libX11;
+function XrmGetDatabase(para1:PDisplay):TXrmDatabase;cdecl;external libX11;
+function XrmGetFileDatabase(para1:Pchar):TXrmDatabase;cdecl;external libX11;
+function XrmCombineFileDatabase(para1:Pchar; para2:PXrmDatabase; para3:TBool):TStatus;cdecl;external libX11;
+function XrmGetStringDatabase(para1:Pchar):TXrmDatabase;cdecl;external libX11;
+procedure XrmPutFileDatabase(para1:TXrmDatabase; para2:Pchar);cdecl;external libX11;
+procedure XrmMergeDatabases(para1:TXrmDatabase; para2:PXrmDatabase);cdecl;external libX11;
+procedure XrmCombineDatabase(para1:TXrmDatabase; para2:PXrmDatabase; para3:TBool);cdecl;external libX11;
+
+const
+ XrmEnumAllLevels = 0;
+ XrmEnumOneLevel = 1;
+type
+ funcbool=function :TBool;
+function XrmEnumerateDatabase(para1:TXrmDatabase; para2:TXrmNameList; para3:TXrmClassList; para4:longint; para5:funcbool;
+ para6:TXPointer):TBool;cdecl;external libX11;
+function XrmLocaleOfDatabase(para1:TXrmDatabase):Pchar;cdecl;external libX11;
+type
+
+ PXrmOptionKind = ^TXrmOptionKind;
+ TXrmOptionKind = (XrmoptionNoArg,XrmoptionIsArg,XrmoptionStickyArg,
+ XrmoptionSepArg,XrmoptionResArg,XrmoptionSkipArg,
+ XrmoptionSkipLine,XrmoptionSkipNArgs);
+
+ PXrmOptionDescRec = ^TXrmOptionDescRec;
+ TXrmOptionDescRec = record
+ option : Pchar;
+ specifier : Pchar;
+ argKind : TXrmOptionKind;
+ value : TXPointer;
+ end;
+ TXrmOptionDescList = PXrmOptionDescRec;
+ PXrmOptionDescList = ^TXrmOptionDescList;
+
+procedure XrmParseCommand(para1:PXrmDatabase; para2:TXrmOptionDescList; para3:longint; para4:Pchar; para5:Plongint;
+ para6:PPchar);cdecl;external libX11;
+
+implementation
+
+function NULLQUARK : TXrmQuark;
+ begin
+ NULLQUARK:=TXrmQuark(0);
+ end;
+
+function NULLSTRING : TXrmString;
+ begin
+ NULLSTRING:=TXrmString(0);
+ end;
+
+{$ifdef MACROS}
+function XrmStringsEqual(a1,a2 : pchar) : boolean;
+begin
+ XrmStringsEqual:=(strcomp(a1,a2)) = 0;
+end;
+
+function XrmNameToString(name : longint) : TXrmString;
+begin
+ XrmNameToString:=XrmQuarkToString(name);
+end;
+
+function XrmStringToName(_string : Pchar) : longint;
+begin
+ XrmStringToName:=XrmStringToQuark(_string);
+end;
+
+procedure XrmStringToNameList(str:Pchar; name : PXrmQuark);
+begin
+ XrmStringToQuarkList(str,name);
+end;
+
+function XrmClassToString(c_class : longint) : TXrmString;
+begin
+ XrmClassToString:=XrmQuarkToString(c_class);
+end;
+
+function XrmStringToClass(c_class : Pchar) : longint;
+begin
+ XrmStringToClass:=XrmStringToQuark(c_class);
+end;
+
+procedure XrmStringToClassList(str:Pchar; c_class : PXrmQuark);
+begin
+ XrmStringToQuarkList(str,c_class);
+end;
+
+function XrmStringToRepresentation(_string : Pchar) : longint;
+begin
+ XrmStringToRepresentation:=XrmStringToQuark(_string);
+end;
+
+function XrmRepresentationToString(_type : longint) : TXrmString;
+begin
+ XrmRepresentationToString:=XrmQuarkToString(_type);
+end;
+{$endif MACROS}
+
+end.
diff --git a/packages/x11/src/xshm.pp b/packages/x11/src/xshm.pp
new file mode 100644
index 0000000000..300d5d7413
--- /dev/null
+++ b/packages/x11/src/xshm.pp
@@ -0,0 +1,87 @@
+unit xshm;
+interface
+uses
+ ctypes,x,xlib;
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+ {$LinkLib Xext}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from xshm.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xshm.h
+}
+
+{$PACKRECORDS C}
+
+
+const
+ X_ShmQueryVersion = 0;
+ X_ShmAttach = 1;
+ X_ShmDetach = 2;
+ X_ShmPutImage = 3;
+ X_ShmGetImage = 4;
+ X_ShmCreatePixmap = 5;
+ ShmCompletion = 0;
+ ShmNumberEvents = ShmCompletion + 1;
+ BadShmSeg = 0;
+ ShmNumberErrors = BadShmSeg + 1;
+type
+
+ PShmSeg = ^TShmSeg;
+ TShmSeg = culong;
+
+ PXShmCompletionEvent = ^TXShmCompletionEvent;
+ TXShmCompletionEvent = record
+ _type : cint;
+ serial : culong;
+ send_event : TBool;
+ display : PDisplay;
+ drawable : TDrawable;
+ major_code : cint;
+ minor_code : cint;
+ shmseg : TShmSeg;
+ offset : culong;
+ end;
+
+ PXShmSegmentInfo = ^TXShmSegmentInfo;
+ TXShmSegmentInfo = record
+ shmseg : TShmSeg;
+ shmid : cint;
+ shmaddr : Pchar;
+ readOnly : TBool;
+ end;
+
+function XShmQueryExtension(para1:PDisplay):TBool;cdecl;external libX11;
+function XShmGetEventBase(para1:PDisplay):cint;cdecl;external libX11;
+function XShmQueryVersion(para1:PDisplay; para2:Pcint; para3:Pcint; para4:PBool):TBool;cdecl;external libX11;
+function XShmPixmapFormat(para1:PDisplay):cint;cdecl;external libX11;
+function XShmAttach(para1:PDisplay; para2:PXShmSegmentInfo):TStatus;cdecl;external libX11;
+function XShmDetach(para1:PDisplay; para2:PXShmSegmentInfo):TStatus;cdecl;external libX11;
+function XShmPutImage(para1:PDisplay; para2:TDrawable; para3:TGC; para4:PXImage; para5:cint;
+ para6:cint; para7:cint; para8:cint; para9:cuint; para10:cuint;
+ para11:TBool):TStatus;cdecl;external libX11;
+function XShmGetImage(para1:PDisplay; para2:TDrawable; para3:PXImage; para4:cint; para5:cint;
+ para6:culong):TStatus;cdecl;external libX11;
+function XShmCreateImage(para1:PDisplay; para2:PVisual; para3:cuint; para4:cint; para5:Pchar;
+ para6:PXShmSegmentInfo; para7:cuint; para8:cuint):PXImage;cdecl;external libX11;
+function XShmCreatePixmap(para1:PDisplay; para2:TDrawable; para3:Pchar; para4:PXShmSegmentInfo; para5:cuint;
+ para6:cuint; para7:cuint):TPixmap;cdecl;external libX11;
+
+implementation
+
+
+end.
diff --git a/packages/x11/src/xutil.pp b/packages/x11/src/xutil.pp
new file mode 100644
index 0000000000..e46ee0d718
--- /dev/null
+++ b/packages/x11/src/xutil.pp
@@ -0,0 +1,386 @@
+unit xutil;
+interface
+uses
+ ctypes,x,xlib,keysym;
+
+{$define MACROS}
+
+{$ifndef os2}
+ {$LinkLib c}
+ {$LinkLib X11}
+const
+ libX11='X11';
+{$else}
+const
+ libX11='X11';
+{$endif}
+
+{
+ Automatically converted by H2Pas 0.99.15 from xutil.h
+ The following command line parameters were used:
+ -p
+ -T
+ -S
+ -d
+ -c
+ xutil.h
+}
+
+{$PACKRECORDS C}
+
+const
+ NoValue = $0000;
+ XValue = $0001;
+ YValue = $0002;
+ WidthValue = $0004;
+ HeightValue = $0008;
+ AllValues = $000F;
+ XNegative = $0010;
+ YNegative = $0020;
+type
+
+ PXSizeHints = ^TXSizeHints;
+ TXSizeHints = record
+ flags : clong;
+ x, y : cint;
+ width, height : cint;
+ min_width, min_height : cint;
+ max_width, max_height : cint;
+ width_inc, height_inc : cint;
+ min_aspect, max_aspect : record
+ x : cint;
+ y : cint;
+ end;
+ base_width, base_height : cint;
+ win_gravity : cint;
+ end;
+
+const
+ USPosition = 1 shl 0;
+ USSize = 1 shl 1;
+ PPosition = 1 shl 2;
+ PSize = 1 shl 3;
+ PMinSize = 1 shl 4;
+ PMaxSize = 1 shl 5;
+ PResizeInc = 1 shl 6;
+ PAspect = 1 shl 7;
+ PBaseSize = 1 shl 8;
+ PWinGravity = 1 shl 9;
+ PAllHints = PPosition or PSize or PMinSize or PMaxSize or PResizeInc or PAspect;
+type
+
+ PXWMHints = ^TXWMHints;
+ TXWMHints = record
+ flags : clong;
+ input : TBool;
+ initial_state : cint;
+ icon_pixmap : TPixmap;
+ icon_window : TWindow;
+ icon_x, icon_y : cint;
+ icon_mask : TPixmap;
+ window_group : TXID;
+ end;
+
+const
+ InputHint = 1 shl 0;
+ StateHint = 1 shl 1;
+ IconPixmapHint = 1 shl 2;
+ IconWindowHint = 1 shl 3;
+ IconPositionHint = 1 shl 4;
+ IconMaskHint = 1 shl 5;
+ WindowGroupHint = 1 shl 6;
+ AllHints = InputHint or StateHint or IconPixmapHint or IconWindowHint or IconPositionHint or IconMaskHint or WindowGroupHint;
+ XUrgencyHint = 1 shl 8;
+ WithdrawnState = 0;
+ NormalState = 1;
+ IconicState = 3;
+ DontCareState = 0;
+ ZoomState = 2;
+ InactiveState = 4;
+type
+
+ PXTextProperty = ^TXTextProperty;
+ TXTextProperty = record
+ value : pcuchar;
+ encoding : TAtom;
+ format : cint;
+ nitems : culong;
+ end;
+
+const
+ XNoMemory = -1;
+ XLocaleNotSupported = -2;
+ XConverterNotFound = -3;
+type
+
+ PXICCEncodingStyle = ^TXICCEncodingStyle;
+ TXICCEncodingStyle = (XStringStyle,XCompoundTextStyle,XTextStyle,
+ XStdICCTextStyle,XUTF8StringStyle);
+
+ PPXIconSize = ^PXIconSize;
+ PXIconSize = ^TXIconSize;
+ TXIconSize = record
+ min_width, min_height : cint;
+ max_width, max_height : cint;
+ width_inc, height_inc : cint;
+ end;
+
+ PXClassHint = ^TXClassHint;
+ TXClassHint = record
+ res_name : Pchar;
+ res_class : Pchar;
+ end;
+
+type
+
+ PXComposeStatus = ^TXComposeStatus;
+ TXComposeStatus = record
+ compose_ptr : TXPointer;
+ chars_matched : cint;
+ end;
+
+type
+
+ PXRegion = ^TXRegion;
+ TXRegion = record
+ end;
+ TRegion = PXRegion;
+ PRegion = ^TRegion;
+
+const
+ RectangleOut = 0;
+ RectangleIn = 1;
+ RectanglePart = 2;
+type
+
+ PXVisualInfo = ^TXVisualInfo;
+ TXVisualInfo = record
+ visual : PVisual;
+ visualid : TVisualID;
+ screen : cint;
+ depth : cint;
+ _class : cint;
+ red_mask : culong;
+ green_mask : culong;
+ blue_mask : culong;
+ colormap_size : cint;
+ bits_per_rgb : cint;
+ end;
+
+const
+ VisualNoMask = $0;
+ VisualIDMask = $1;
+ VisualScreenMask = $2;
+ VisualDepthMask = $4;
+ VisualClassMask = $8;
+ VisualRedMaskMask = $10;
+ VisualGreenMaskMask = $20;
+ VisualBlueMaskMask = $40;
+ VisualColormapSizeMask = $80;
+ VisualBitsPerRGBMask = $100;
+ VisualAllMask = $1FF;
+type
+
+ PPXStandardColormap = ^PXStandardColormap;
+ PXStandardColormap = ^TXStandardColormap;
+ TXStandardColormap = record
+ colormap : TColormap;
+ red_max : culong;
+ red_mult : culong;
+ green_max : culong;
+ green_mult : culong;
+ blue_max : culong;
+ blue_mult : culong;
+ base_pixel : culong;
+ visualid : TVisualID;
+ killid : TXID;
+ end;
+
+const
+ BitmapSuccess = 0;
+ BitmapOpenFailed = 1;
+ BitmapFileInvalid = 2;
+ BitmapNoMemory = 3;
+ XCSUCCESS = 0;
+ XCNOMEM = 1;
+ XCNOENT = 2;
+ ReleaseByFreeingColormap : TXID = TXID(1);
+
+type
+ PXContext = ^TXContext;
+ TXContext = cint;
+
+function XAllocClassHint:PXClassHint;cdecl;external libX11;
+function XAllocIconSize:PXIconSize;cdecl;external libX11;
+function XAllocSizeHints:PXSizeHints;cdecl;external libX11;
+function XAllocStandardColormap:PXStandardColormap;cdecl;external libX11;
+function XAllocWMHints:PXWMHints;cdecl;external libX11;
+function XClipBox(para1:TRegion; para2:PXRectangle):cint;cdecl;external libX11;
+function XCreateRegion:TRegion;cdecl;external libX11;
+function XDefaultString:Pchar;cdecl;external libX11;
+function XDeleteContext(para1:PDisplay; para2:TXID; para3:TXContext):cint;cdecl;external libX11;
+function XDestroyRegion(para1:TRegion):cint;cdecl;external libX11;
+function XEmptyRegion(para1:TRegion):cint;cdecl;external libX11;
+function XEqualRegion(para1:TRegion; para2:TRegion):cint;cdecl;external libX11;
+function XFindContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:PXPointer):cint;cdecl;external libX11;
+function XGetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):TStatus;cdecl;external libX11;
+function XGetIconSizes(para1:PDisplay; para2:TWindow; para3:PPXIconSize; para4:Pcint):TStatus;cdecl;external libX11;
+function XGetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
+function XGetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PPXStandardColormap; para4:Pcint; para5:TAtom):TStatus;cdecl;external libX11;
+function XGetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):TStatus;cdecl;external libX11;
+function XGetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom):TStatus;cdecl;external libX11;
+function XGetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom):TStatus;cdecl;external libX11;
+function XGetVisualInfo(para1:PDisplay; para2:clong; para3:PXVisualInfo; para4:Pcint):PXVisualInfo;cdecl;external libX11;
+function XGetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
+function XGetWMHints(para1:PDisplay; para2:TWindow):PXWMHints;cdecl;external libX11;
+function XGetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
+function XGetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty):TStatus;cdecl;external libX11;
+function XGetWMNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Pclong):TStatus;cdecl;external libX11;
+function XGetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:Pclong; para5:TAtom):TStatus;cdecl;external libX11;
+function XGetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):TStatus;cdecl;external libX11;
+function XIntersectRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
+procedure XConvertCase(para1:TKeySym; para2:PKeySym; para3:PKeySym);cdecl;external libX11;
+function XLookupString(para1:PXKeyEvent; para2:Pchar; para3:cint; para4:PKeySym; para5:PXComposeStatus):cint;cdecl;external libX11;
+function XMatchVisualInfo(para1:PDisplay; para2:cint; para3:cint; para4:cint; para5:PXVisualInfo):TStatus;cdecl;external libX11;
+function XOffsetRegion(para1:TRegion; para2:cint; para3:cint):cint;cdecl;external libX11;
+function XPointInRegion(para1:TRegion; para2:cint; para3:cint):TBool;cdecl;external libX11;
+function XPolygonRegion(para1:PXPoint; para2:cint; para3:cint):TRegion;cdecl;external libX11;
+function XRectInRegion(para1:TRegion; para2:cint; para3:cint; para4:cuint; para5:cuint):cint;cdecl;external libX11;
+function XSaveContext(para1:PDisplay; para2:TXID; para3:TXContext; para4:Pchar):cint;cdecl;external libX11;
+function XSetClassHint(para1:PDisplay; para2:TWindow; para3:PXClassHint):cint;cdecl;external libX11;
+function XSetIconSizes(para1:PDisplay; para2:TWindow; para3:PXIconSize; para4:cint):cint;cdecl;external libX11;
+function XSetNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):cint;cdecl;external libX11;
+procedure XSetRGBColormaps(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:cint; para5:TAtom);cdecl;external libX11;
+function XSetSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom):cint;cdecl;external libX11;
+function XSetStandardProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:TPixmap;
+ para6:PPchar; para7:cint; para8:PXSizeHints):cint;cdecl;external libX11;
+procedure XSetTextProperty(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:TAtom);cdecl;external libX11;
+procedure XSetWMClientMachine(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
+function XSetWMHints(para1:PDisplay; para2:TWindow; para3:PXWMHints):cint;cdecl;external libX11;
+procedure XSetWMIconName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
+procedure XSetWMName(para1:PDisplay; para2:TWindow; para3:PXTextProperty);cdecl;external libX11;
+procedure XSetWMNormalHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints);cdecl;external libX11;
+procedure XSetWMProperties(para1:PDisplay; para2:TWindow; para3:PXTextProperty; para4:PXTextProperty; para5:PPchar;
+ para6:cint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
+procedure XmbSetWMProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:PPchar;
+ para6:cint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
+procedure Xutf8SetWMProperties(para1:PDisplay; para2:TWindow; para3:Pchar; para4:Pchar; para5:PPchar;
+ para6:cint; para7:PXSizeHints; para8:PXWMHints; para9:PXClassHint);cdecl;external libX11;
+procedure XSetWMSizeHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints; para4:TAtom);cdecl;external libX11;
+function XSetRegion(para1:PDisplay; para2:TGC; para3:TRegion):cint;cdecl;external libX11;
+procedure XSetStandardColormap(para1:PDisplay; para2:TWindow; para3:PXStandardColormap; para4:TAtom);cdecl;external libX11;
+function XSetZoomHints(para1:PDisplay; para2:TWindow; para3:PXSizeHints):cint;cdecl;external libX11;
+function XShrinkRegion(para1:TRegion; para2:cint; para3:cint):cint;cdecl;external libX11;
+function XStringListToTextProperty(para1:PPchar; para2:cint; para3:PXTextProperty):TStatus;cdecl;external libX11;
+function XSubtractRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
+function XmbTextListToTextProperty(para1:PDisplay; para2:PPchar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
+function XwcTextListToTextProperty(para1:PDisplay; para2:PPWideChar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
+function Xutf8TextListToTextProperty(para1:PDisplay; para2:PPchar; para3:cint; para4:TXICCEncodingStyle; para5:PXTextProperty):cint;cdecl;external libX11;
+procedure XwcFreeStringList(para1:PPWideChar);cdecl;external libX11;
+function XTextPropertyToStringList(para1:PXTextProperty; para2:PPPchar; para3:Pcint):TStatus;cdecl;external libX11;
+function XmbTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPchar; para4:Pcint):cint;cdecl;external libX11;
+function XwcTextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPWideChar; para4:Pcint):cint;cdecl;external libX11;
+function Xutf8TextPropertyToTextList(para1:PDisplay; para2:PXTextProperty; para3:PPPchar; para4:Pcint):cint;cdecl;external libX11;
+function XUnionRectWithRegion(para1:PXRectangle; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
+function XUnionRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
+function XWMGeometry(para1:PDisplay; para2:cint; para3:Pchar; para4:Pchar; para5:cuint;
+ para6:PXSizeHints; para7:Pcint; para8:Pcint; para9:Pcint; para10:Pcint;
+ para11:Pcint):cint;cdecl;external libX11;
+function XXorRegion(para1:TRegion; para2:TRegion; para3:TRegion):cint;cdecl;external libX11;
+
+{$ifdef MACROS}
+function XDestroyImage(ximage : PXImage) : cint;
+function XGetPixel(ximage : PXImage; x, y : cint) : culong;
+function XPutPixel(ximage : PXImage; x, y : cint; pixel : culong) : cint;
+function XSubImage(ximage : PXImage; x, y : cint; width, height : cuint) : PXImage;
+function XAddPixel(ximage : PXImage; value : clong) : cint;
+function IsKeypadKey(keysym : TKeySym) : Boolean;
+function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
+function IsCursorKey(keysym : TKeySym) : Boolean;
+function IsPFKey(keysym : TKeySym) : Boolean;
+function IsFunctionKey(keysym : TKeySym) : Boolean;
+function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
+function IsModifierKey(keysym : TKeySym) : Boolean;
+{function XUniqueContext : TXContext;
+function XStringToContext(_string : Pchar) : TXContext;}
+{$endif MACROS}
+
+implementation
+
+{$ifdef MACROS}
+
+function XDestroyImage(ximage : PXImage) : cint;
+
+begin
+ XDestroyImage := ximage^.f.destroy_image(ximage);
+end;
+
+function XGetPixel(ximage : PXImage; x, y : cint) : culong;
+begin
+ XGetPixel:=ximage^.f.get_pixel(ximage, x, y);
+end;
+
+function XPutPixel(ximage : PXImage; x, y : cint; pixel : culong) : cint;
+begin
+ XPutPixel:=ximage^.f.put_pixel(ximage, x, y, pixel);
+end;
+
+function XSubImage(ximage : PXImage; x, y : cint; width, height : cuint) : PXImage;
+begin
+ XSubImage:=ximage^.f.sub_image(ximage, x, y, width, height);
+end;
+
+function XAddPixel(ximage : PXImage; value : clong) : cint;
+begin
+ XAddPixel:=ximage^.f.add_pixel(ximage, value);
+end;
+
+function IsKeypadKey(keysym : TKeySym) : Boolean;
+begin
+ IsKeypadKey:=(keysym >= XK_KP_Space) and (keysym <= XK_KP_Equal);
+end;
+
+function IsPrivateKeypadKey(keysym : TKeySym) : Boolean;
+begin
+ IsPrivateKeypadKey:=(keysym >= $11000000) and (keysym <= $1100FFFF);
+end;
+
+function IsCursorKey(keysym : TKeySym) : Boolean;
+begin
+ IsCursorKey:=(keysym >= XK_Home) and (keysym < XK_Select);
+end;
+
+function IsPFKey(keysym : TKeySym) : Boolean;
+begin
+ IsPFKey:=(keysym >= XK_KP_F1) and (keysym <= XK_KP_F4);
+end;
+
+function IsFunctionKey(keysym : TKeySym) : Boolean;
+begin
+ IsFunctionKey:=(keysym >= XK_F1) and (keysym <= XK_F35);
+end;
+
+function IsMiscFunctionKey(keysym : TKeySym) : Boolean;
+begin
+ IsMiscFunctionKey:=(keysym >= XK_Select) and (keysym <= XK_Break);
+end;
+
+function IsModifierKey(keysym : TKeySym) : Boolean;
+begin
+ IsModifierKey := ((keysym >= XK_Shift_L) And (keysym <= XK_Hyper_R)) Or
+ (keysym = XK_Mode_switch) Or (keysym = XK_Num_Lock);
+end;
+
+{...needs xresource
+function XUniqueContext : TXContext;
+begin
+ XUniqueContext:=TXContext(XrmUniqueQuark);
+end;
+
+function XStringToContext(_string : Pchar) : TXContext;
+begin
+ XStringToContext:=TXContext(XrmStringToQuark(_string));
+end;}
+{$endif MACROS}
+
+end.
diff --git a/packages/x11/src/xv.pp b/packages/x11/src/xv.pp
new file mode 100644
index 0000000000..6b62eb4788
--- /dev/null
+++ b/packages/x11/src/xv.pp
@@ -0,0 +1,118 @@
+{***********************************************************
+Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************}
+{ $XFree86: xc/include/extensions/Xv.h,v 1.3 1999/05/23 06:33:22 dawes Exp $ }
+
+unit xv;
+
+interface
+
+{$PACKRECORDS c}
+
+uses
+ x;
+
+const
+ XvName = 'XVideo';
+ XvVersion = 2;
+ XvRevision = 2;
+
+{ Symbols }
+type
+ TXvPortID = TXID;
+ TXvEncodingID = TXID;
+
+const
+ XvNone = 0;
+
+ XvInput = 0;
+ XvOutput = 1;
+
+ XvInputMask = 1 shl XvInput;
+ XvOutputMask = 1 shl XvOutput;
+ XvVideoMask = $00000004;
+ XvStillMask = $00000008;
+ XvImageMask = $00000010;
+
+{ These two are not client viewable }
+ XvPixmapMask = $00010000;
+ XvWindowMask = $00020000;
+
+
+ XvGettable = $01;
+ XvSettable = $02;
+
+ XvRGB = 0;
+ XvYUV = 1;
+
+ XvPacked = 0;
+ XvPlanar = 1;
+
+ XvTopToBottom = 0;
+ XvBottomToTop = 1;
+
+
+{ Events }
+
+ XvVideoNotify = 0;
+ XvPortNotify = 1;
+ XvNumEvents = 2;
+
+{ Video Notify Reasons }
+
+ XvStarted = 0;
+ XvStopped = 1;
+ XvBusy = 2;
+ XvPreempted = 3;
+ XvHardError = 4;
+ XvLastReason = 4;
+
+ XvNumReasons = XvLastReason + 1;
+
+ XvStartedMask = 1 shl XvStarted;
+ XvStoppedMask = 1 shl XvStopped;
+ XvBusyMask = 1 shl XvBusy;
+ XvPreemptedMask = 1 shl XvPreempted;
+ XvHardErrorMask = 1 shl XvHardError;
+
+ XvAnyReasonMask = (1 shl XvNumReasons) - 1;
+ XvNoReasonMask = 0;
+
+{ Errors }
+
+ XvBadPort = 0;
+ XvBadEncoding = 1;
+ XvBadControl = 2;
+ XvNumErrors = 3;
+
+{ Status }
+
+ XvBadExtension = 1;
+ XvAlreadyGrabbed = 2;
+ XvInvalidTime = 3;
+ XvBadReply = 4;
+ XvBadAlloc = 5;
+
+implementation
+
+end.
diff --git a/packages/x11/src/xvlib.pp b/packages/x11/src/xvlib.pp
new file mode 100644
index 0000000000..5b15df7410
--- /dev/null
+++ b/packages/x11/src/xvlib.pp
@@ -0,0 +1,408 @@
+{***********************************************************
+Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************}
+{ $XFree86: xc/include/extensions/Xvlib.h,v 1.3 1999/12/11 19:28:48 mvojkovi Exp $ }
+
+{*
+** File:
+**
+** Xvlib.h --- Xv library public header file
+**
+** Author:
+**
+** David Carver (Digital Workstation Engineering/Project Athena)
+**
+** Revisions:
+**
+** 26.06.91 Carver
+** - changed XvFreeAdaptors to XvFreeAdaptorInfo
+** - changed XvFreeEncodings to XvFreeEncodingInfo
+**
+** 11.06.91 Carver
+** - changed SetPortControl to SetPortAttribute
+** - changed GetPortControl to GetPortAttribute
+** - changed QueryBestSize
+**
+** 05.15.91 Carver
+** - version 2.0 upgrade
+**
+** 01.24.91 Carver
+** - version 1.4 upgrade
+**
+*}
+
+unit xvlib;
+
+interface
+
+uses
+ ctypes, x, xlib, xshm, xv;
+
+{$PACKRECORDS c}
+
+const
+ libXv='Xv';
+
+type
+ PXvRational = ^TXvRational;
+ TXvRational = record
+ numerator : cint;
+ denominator : cint;
+ end;
+
+ PXvAttribute = ^TXvAttribute;
+ TXvAttribute = record
+ flags : cint; { XvGettable, XvSettable }
+ min_value : cint;
+ max_value : cint;
+ name : pchar;
+ end;
+
+ PPXvEncodingInfo = ^PXvEncodingInfo;
+ PXvEncodingInfo = ^TXvEncodingInfo;
+ TXvEncodingInfo = record
+ encoding_id : TXvEncodingID;
+ name : pchar;
+ width : culong;
+ height : culong;
+ rate : TXvRational;
+ num_encodings : culong;
+ end;
+
+ PXvFormat = ^TXvFormat;
+ TXvFormat = record
+ depth : cchar;
+ visual_id : culong;
+ end;
+
+ PPXvAdaptorInfo = ^PXvAdaptorInfo;
+ PXvAdaptorInfo = ^TXvAdaptorInfo;
+ TXvAdaptorInfo = record
+ base_id : TXvPortID;
+ num_ports : culong;
+ _type : cchar;
+ name : pchar;
+ num_formats : culong;
+ formats : PXvFormat;
+ num_adaptors : culong;
+ end;
+
+ PXvVideoNotifyEvent = ^TXvVideoNotifyEvent;
+ TXvVideoNotifyEvent = record
+ _type : cint;
+ serial : culong; { # of last request processed by server }
+ send_event : TBool; { true if this came from a SendEvent request }
+ display : PDisplay; { Display the event was read from }
+ drawable : TDrawable; { drawable }
+ reason : culong; { what generated this event }
+ port_id : TXvPortID; { what port }
+ time : TTime; { milliseconds }
+ end;
+
+ PXvPortNotifyEvent = ^TXvPortNotifyEvent;
+ TXvPortNotifyEvent = record
+ _type : cint;
+ serial : culong; { # of last request processed by server }
+ send_event : TBool; { true if this came from a SendEvent request }
+ display : PDisplay; { Display the event was read from }
+ port_id : TXvPortID; { what port }
+ time : TTime; { milliseconds }
+ attribute : TAtom; { atom that identifies attribute }
+ value : clong; { value of attribute }
+ end;
+
+ PXvEvent = ^TXvEvent;
+ TXvEvent = record
+ case longint of
+ 0 : (
+ _type : cint;
+ );
+ 1 : (
+ xvvideo : TXvVideoNotifyEvent;
+ );
+ 2 : (
+ xvport : TXvPortNotifyEvent;
+ );
+ 3 : (
+ pad : array[0..23] of clong;
+ );
+ end;
+
+ PXvImageFormatValues = ^TXvImageFormatValues;
+ TXvImageFormatValues = record
+ id : cint; { Unique descriptor for the format }
+ _type : cint; { XvRGB, XvYUV }
+ byte_order : cint; { LSBFirst, MSBFirst }
+ guid : array[0..15] of cchar; { Globally Unique IDentifier }
+ bits_per_pixel : cint;
+ format : cint; { XvPacked, XvPlanar }
+ num_planes : cint;
+
+ { for RGB formats only }
+ depth : cint;
+ red_mask : cuint;
+ green_mask : cuint;
+ blue_mask : cuint;
+
+ { for YUV formats only }
+ y_sample_bits : cuint;
+ u_sample_bits : cuint;
+ v_sample_bits : cuint;
+ horz_y_period : cuint;
+ horz_u_period : cuint;
+ horz_v_period : cuint;
+ vert_y_period : cuint;
+ vert_u_period : cuint;
+ vert_v_period : cuint;
+ component_order : array[0..31] of char; { eg. UYVY }
+ scanline_order : cint; { XvTopToBottom, XvBottomToTop }
+ end;
+
+ PXvImage = ^TXvImage;
+ TXvImage = record
+ id : cint;
+ width, height : cint;
+ data_size : cint; { bytes }
+ num_planes : cint;
+ pitches : pcint; { bytes }
+ offsets : pcint; { bytes }
+ data : pcchar;
+ obdata : TXPointer;
+ end;
+
+function XvQueryExtension(
+ display : PDisplay;
+ p_version,
+ p_revision,
+ p_requestBase,
+ p_eventBase,
+ p_errorBase : pcuint
+) : cint; cdecl; external libXv;
+
+function XvQueryAdaptors(
+ display : PDisplay;
+ window : TWindow;
+ p_nAdaptors : pcuint;
+ p_pAdaptors : PPXvAdaptorInfo
+) : cint; cdecl; external libXv;
+
+function XvQueryEncodings(
+ display : PDisplay;
+ port : TXvPortID;
+ p_nEncoding : pcuint;
+ p_pEncoding : PPXvEncodingInfo
+) : cint; cdecl; external libXv;
+
+function XvPutVideo(
+ display : PDisplay;
+ port : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ vx,
+ vy : cint;
+ vw,
+ vh : cuint;
+ dx,
+ dy : cint;
+ dw,
+ dh : cuint
+) : cint; cdecl; external libXv;
+
+function XvPutStill(
+ display : PDisplay;
+ port : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ vx,
+ vy : cint;
+ vw,
+ vh : cuint;
+ dx,
+ dy : cint;
+ dw,
+ dh : cuint
+) : cint; cdecl; external libXv;
+
+function XvGetVideo(
+ display : PDisplay;
+ port : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ vx,
+ vy : cint;
+ vw,
+ vh : cuint;
+ dx,
+ dy : cint;
+ dw,
+ dh : cuint
+) : cint; cdecl; external libXv;
+
+function XvGetStill(
+ display : PDisplay;
+ port : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ vx,
+ vy : cint;
+ vw,
+ vh : cuint;
+ dx,
+ dy : cint;
+ dw,
+ dh : cuint
+) : cint; cdecl; external libXv;
+
+function XvStopVideo(
+ display : PDisplay;
+ port : TXvPortID;
+ drawable : TDrawable
+) : cint; cdecl; external libXv;
+
+function XvGrabPort(
+ display : PDisplay;
+ port : TXvPortID;
+ time : TTime
+) : cint; cdecl; external libXv;
+
+function XvUngrabPort(
+ display : PDisplay;
+ port : TXvPortID;
+ time : TTime
+) : cint; cdecl; external libXv;
+
+function XvSelectVideoNotify(
+ display : PDisplay;
+ drawable : TDrawable;
+ onoff : TBool
+) : cint; cdecl; external libXv;
+
+function XvSelectPortNotify(
+ display : PDisplay;
+ port : TXvPortID;
+ onoff : TBool
+) : cint; cdecl; external libXv;
+
+function XvSetPortAttribute(
+ display : PDisplay;
+ port : TXvPortID;
+ attribute : TAtom;
+ value : cint
+) : cint; cdecl; external libXv;
+
+function XvGetPortAttribute(
+ display : PDisplay;
+ port : TXvPortID;
+ attribute : TAtom;
+ p_value : pcint
+) : cint; cdecl; external libXv;
+
+function XvQueryBestSize(
+ display : PDisplay;
+ port : TXvPortID;
+ motion : TBool;
+ vid_w,
+ vid_h,
+ drw_w,
+ drw_h : cuint;
+ p_actual_width,
+ p_actual_height : pcuint
+) : cint; cdecl; external libXv;
+
+function XvQueryPortAttributes(
+ display : PDisplay;
+ port : TXvPortID;
+ number : pcint
+) : PXvAttribute; cdecl; external libXv;
+
+
+procedure XvFreeAdaptorInfo(
+ adaptors : PXvAdaptorInfo
+); cdecl; external libXv;
+
+procedure XvFreeEncodingInfo(
+ encodings : PXvEncodingInfo
+); cdecl; external libXv;
+
+
+function XvListImageFormats (
+ display : PDisplay;
+ port_id : TXvPortID;
+ count_return : pcint
+) : PXvImageFormatValues; cdecl; external libXv;
+
+function XvCreateImage (
+ display : PDisplay;
+ port : TXvPortID;
+ id : cint;
+ data : pcchar;
+ width,
+ height : cint
+) : PXvImage; cdecl; external libXv;
+
+function XvPutImage (
+ display : PDisplay;
+ id : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ image : PXvImage;
+ src_x,
+ src_y : cint;
+ src_w,
+ src_h : cuint;
+ dest_x,
+ dest_y : cint;
+ dest_w,
+ dest_h : cuint
+) : cint; cdecl; external libXv;
+
+function XvShmPutImage (
+ display : PDisplay;
+ id : TXvPortID;
+ d : TDrawable;
+ gc : TGC;
+ image : PXvImage;
+ src_x,
+ src_y : cint;
+ src_w,
+ src_h : cuint;
+ dest_x,
+ dest_y : cint;
+ dest_w,
+ dest_h : cuint;
+ send_event : TBool
+) : cint; cdecl; external libXv;
+
+function XvShmCreateImage(
+ display : PDisplay;
+ port : TXvPortID;
+ id : cint;
+ data : pcchar;
+ width,
+ height : cint;
+ shminfo : PXShmSegmentInfo
+) : PXvImage; cdecl; external libXv;
+
+implementation
+
+end.