diff options
author | marha <marha@users.sourceforge.net> | 2011-03-08 08:20:49 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2011-03-08 08:20:49 +0000 |
commit | 8c74e7257ed453143c53086f884f6c6ff585379a (patch) | |
tree | f9e595d40a1689b21b1541cfc7595d9146ec2854 | |
parent | d550ff64af08efb189450fa7b7104b3e049b5779 (diff) | |
download | vcxsrv-8c74e7257ed453143c53086f884f6c6ff585379a.tar.gz vcxsrv-8c74e7257ed453143c53086f884f6c6ff585379a.tar.bz2 vcxsrv-8c74e7257ed453143c53086f884f6c6ff585379a.zip |
xkeyboard-config mesa git update 8 Mar 2011
-rw-r--r-- | mesalib/configs/autoconf.in | 437 | ||||
-rw-r--r-- | mesalib/src/mesa/main/bufferobj.c | 1 | ||||
-rw-r--r-- | mesalib/src/mesa/main/drawpix.c | 2 | ||||
-rw-r--r-- | mesalib/src/mesa/main/fbobject.c | 36 | ||||
-rw-r--r-- | mesalib/src/mesa/main/mtypes.h | 2 | ||||
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_cb_fbo.c | 1286 | ||||
-rw-r--r-- | mesalib/src/mesa/state_tracker/st_manager.c | 1845 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/rules/base.xml.in | 12397 | ||||
-rw-r--r-- | xorg-server/xkeyboard-config/symbols/in | 2763 |
9 files changed, 9445 insertions, 9324 deletions
diff --git a/mesalib/configs/autoconf.in b/mesalib/configs/autoconf.in index ab3fe7dc4..4e931a3a9 100644 --- a/mesalib/configs/autoconf.in +++ b/mesalib/configs/autoconf.in @@ -1,218 +1,219 @@ -# Autoconf configuration
-
-# Pull in the defaults
-include $(TOP)/configs/default
-
-# This is generated by configure
-CONFIG_NAME = autoconf
-
-# Compiler and flags
-CC = @CC@
-CXX = @CXX@
-OPT_FLAGS = @OPT_FLAGS@
-ARCH_FLAGS = @ARCH_FLAGS@
-ASM_FLAGS = @ASM_FLAGS@
-PIC_FLAGS = @PIC_FLAGS@
-DEFINES = @DEFINES@
-API_DEFINES = @API_DEFINES@
-SHARED_GLAPI = @SHARED_GLAPI@
-CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
- $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
-CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
- $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
-CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@
-CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@
-LDFLAGS = @LDFLAGS@
-EXTRA_LIB_PATH = @EXTRA_LIB_PATH@
-RADEON_CFLAGS = @RADEON_CFLAGS@
-RADEON_LDFLAGS = @RADEON_LDFLAGS@
-INTEL_LIBS = @INTEL_LIBS@
-INTEL_CFLAGS = @INTEL_CFLAGS@
-X11_LIBS = @X11_LIBS@
-X11_CFLAGS = @X11_CFLAGS@
-LLVM_CFLAGS = @LLVM_CFLAGS@
-LLVM_LDFLAGS = @LLVM_LDFLAGS@
-LLVM_LIBS = @LLVM_LIBS@
-GLW_CFLAGS = @GLW_CFLAGS@
-GLUT_CFLAGS = @GLUT_CFLAGS@
-GLX_TLS = @GLX_TLS@
-DRI_CFLAGS = @DRI_CFLAGS@
-DRI_CXXFLAGS = @DRI_CXXFLAGS@
-
-# dlopen
-DLOPEN_LIBS = @DLOPEN_LIBS@
-
-# Source selection
-MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
-GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@
-
-# Misc tools and flags
-MAKE = @MAKE@
-SHELL = @SHELL@
-MKLIB_OPTIONS = @MKLIB_OPTIONS@
-MKDEP = @MKDEP@
-MKDEP_OPTIONS = @MKDEP_OPTIONS@
-INSTALL = @INSTALL@
-
-# Python and flags (generally only needed by the developers)
-PYTHON2 = @PYTHON2@
-PYTHON_FLAGS = -t -O -O
-
-# Library names (base name)
-GL_LIB = GL
-GLU_LIB = GLU
-GLUT_LIB = glut
-GLW_LIB = GLw
-OSMESA_LIB = @OSMESA_LIB@
-GLESv1_CM_LIB = GLESv1_CM
-GLESv2_LIB = GLESv2
-VG_LIB = OpenVG
-GLAPI_LIB = glapi
-WAYLAND_EGL_LIB = wayland-egl
-
-# Library names (actual file names)
-GL_LIB_NAME = @GL_LIB_NAME@
-GLU_LIB_NAME = @GLU_LIB_NAME@
-GLUT_LIB_NAME = @GLUT_LIB_NAME@
-GLW_LIB_NAME = @GLW_LIB_NAME@
-OSMESA_LIB_NAME = @OSMESA_LIB_NAME@
-EGL_LIB_NAME = @EGL_LIB_NAME@
-GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@
-GLESv2_LIB_NAME = @GLESv2_LIB_NAME@
-VG_LIB_NAME = @VG_LIB_NAME@
-GLAPI_LIB_NAME = @GLAPI_LIB_NAME@
-WAYLAND_EGL_LIB_NAME = @WAYLAND_EGL_LIB_NAME@
-
-# Globs used to install the lib and all symlinks
-GL_LIB_GLOB = @GL_LIB_GLOB@
-GLU_LIB_GLOB = @GLU_LIB_GLOB@
-GLUT_LIB_GLOB = @GLUT_LIB_GLOB@
-GLW_LIB_GLOB = @GLW_LIB_GLOB@
-OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@
-EGL_LIB_GLOB = @EGL_LIB_GLOB@
-GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@
-GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@
-VG_LIB_GLOB = @VG_LIB_GLOB@
-GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@
-WAYLAND_EGL_LIB_GLOB = @WAYLAND_EGL_LIB_GLOB@
-
-# Directories to build
-LIB_DIR = @LIB_DIR@
-SRC_DIRS = @SRC_DIRS@
-GLU_DIRS = @GLU_DIRS@
-DRIVER_DIRS = @DRIVER_DIRS@
-EGL_DRIVERS_DIRS = @EGL_DRIVERS_DIRS@
-GALLIUM_DIRS = @GALLIUM_DIRS@
-GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@
-GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@
-GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@
-GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@
-GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
-GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
-
-# Driver specific build vars
-DRI_DIRS = @DRI_DIRS@
-DRICORE_GLSL_LIBS = @DRICORE_GLSL_LIBS@
-DRICORE_LIBS = @DRICORE_LIBS@
-DRICORE_LIB_DEPS = @DRICORE_LIB_DEPS@
-EGL_PLATFORMS = @EGL_PLATFORMS@
-EGL_CLIENT_APIS = @EGL_CLIENT_APIS@
-
-# Dependencies
-X11_INCLUDES = @X11_INCLUDES@
-
-# GLw motif setup
-GLW_SOURCES = @GLW_SOURCES@
-MOTIF_CFLAGS = @MOTIF_CFLAGS@
-
-# Library/program dependencies
-GL_LIB_DEPS = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@
-OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \
- $(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@
-EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @EGL_LIB_DEPS@
-GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \
- $(EXTRA_LIB_PATH) @GLU_LIB_DEPS@
-GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \
- $(EXTRA_LIB_PATH) @GLUT_LIB_DEPS@
-GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
- $(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
-APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@
-GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_CM_LIB_DEPS@
-GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@
-VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@
-GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) @GLAPI_LIB_DEPS@
-WAYLAND_EGL_LIB_DEPS = $(EXTRA_LIBPATH) @WAYLAND_EGL_LIB_DEPS@
-
-# DRI dependencies
-MESA_MODULES = @MESA_MODULES@
-DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
-LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
-LIBDRM_LIB = @LIBDRM_LIBS@
-DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@
-EXPAT_INCLUDES = @EXPAT_INCLUDES@
-
-# Autoconf directories
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-libdir = @libdir@
-includedir = @includedir@
-
-# Installation directories (for make install)
-INSTALL_DIR = $(prefix)
-INSTALL_LIB_DIR = $(libdir)
-INSTALL_INC_DIR = $(includedir)
-
-# DRI installation directories
-DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@
-
-# Where libGL will look for DRI hardware drivers
-DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@
-
-# EGL driver install directory
-EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@
-
-# Xorg driver install directory (for xorg state-tracker)
-XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@
-
-# pkg-config substitutions
-GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
-GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
-GL_PC_CFLAGS = @GL_PC_CFLAGS@
-DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@
-GLU_PC_REQ = @GLU_PC_REQ@
-GLU_PC_REQ_PRIV = @GLU_PC_REQ_PRIV@
-GLU_PC_LIB_PRIV = @GLU_PC_LIB_PRIV@
-GLU_PC_CFLAGS = @GLU_PC_CFLAGS@
-GLUT_PC_REQ_PRIV = @GLUT_PC_REQ_PRIV@
-GLUT_PC_LIB_PRIV = @GLUT_PC_LIB_PRIV@
-GLUT_PC_CFLAGS = @GLUT_PC_CFLAGS@
-GLW_PC_REQ_PRIV = @GLW_PC_REQ_PRIV@
-GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@
-GLW_PC_CFLAGS = @GLW_PC_CFLAGS@
-OSMESA_PC_REQ = @OSMESA_PC_REQ@
-OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@
-GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@
-GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
-EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
-EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
-EGL_PC_CFLAGS = @GL_PC_CFLAGS@
-WAYLAND_EGL_PC_REQ_PRIV = @WAYLAND_EGL_PC_REQ_PRIV@
-WAYLAND_EGL_PC_LIB_PRIV = @WAYLAND_EGL_PC_LIB_PRIV@
-WAYLAND_EGL_PC_CFLAGS = @WAYLAND_EGL_PC_CFLAGS@
-
-XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@
-XCB_DRI2_LIBS = @XCB_DRI2_LIBS@
-LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
-LIBUDEV_LIBS = @LIBUDEV_LIBS@
-WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
-WAYLAND_LIBS = @WAYLAND_LIBS@
-
-MESA_LLVM = @MESA_LLVM@
-
-LLVM_VERSION = @LLVM_VERSION@
-ifneq ($(LLVM_VERSION),)
- HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=))
- DEFINES += -DHAVE_LLVM=$(HAVE_LLVM)
-endif
-
-HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@
+# Autoconf configuration + +# Pull in the defaults +include $(TOP)/configs/default + +# This is generated by configure +CONFIG_NAME = autoconf + +# Compiler and flags +CC = @CC@ +CXX = @CXX@ +OPT_FLAGS = @OPT_FLAGS@ +ARCH_FLAGS = @ARCH_FLAGS@ +ASM_FLAGS = @ASM_FLAGS@ +PIC_FLAGS = @PIC_FLAGS@ +DEFINES = @DEFINES@ +API_DEFINES = @API_DEFINES@ +SHARED_GLAPI = @SHARED_GLAPI@ +CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \ + $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) +CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \ + $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) +CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@ +CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@ +LDFLAGS = @LDFLAGS@ +EXTRA_LIB_PATH = @EXTRA_LIB_PATH@ +RADEON_CFLAGS = @RADEON_CFLAGS@ +RADEON_LDFLAGS = @RADEON_LDFLAGS@ +INTEL_LIBS = @INTEL_LIBS@ +INTEL_CFLAGS = @INTEL_CFLAGS@ +X11_LIBS = @X11_LIBS@ +X11_CFLAGS = @X11_CFLAGS@ +LLVM_CFLAGS = @LLVM_CFLAGS@ +LLVM_LDFLAGS = @LLVM_LDFLAGS@ +LLVM_LIBS = @LLVM_LIBS@ +GLW_CFLAGS = @GLW_CFLAGS@ +GLUT_CFLAGS = @GLUT_CFLAGS@ +GLX_TLS = @GLX_TLS@ +DRI_CFLAGS = @DRI_CFLAGS@ +DRI_CXXFLAGS = @DRI_CXXFLAGS@ + +# dlopen +DLOPEN_LIBS = @DLOPEN_LIBS@ + +# Source selection +MESA_ASM_SOURCES = @MESA_ASM_SOURCES@ +GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@ + +# Misc tools and flags +MAKE = @MAKE@ +SHELL = @SHELL@ +MKLIB_OPTIONS = @MKLIB_OPTIONS@ +MKDEP = @MKDEP@ +MKDEP_OPTIONS = @MKDEP_OPTIONS@ +INSTALL = @INSTALL@ + +# Python and flags (generally only needed by the developers) +PYTHON2 = @PYTHON2@ +PYTHON_FLAGS = -t -O -O + +# Library names (base name) +GL_LIB = GL +GLU_LIB = GLU +GLUT_LIB = glut +GLW_LIB = GLw +OSMESA_LIB = @OSMESA_LIB@ +GLESv1_CM_LIB = GLESv1_CM +GLESv2_LIB = GLESv2 +VG_LIB = OpenVG +GLAPI_LIB = glapi +WAYLAND_EGL_LIB = wayland-egl + +# Library names (actual file names) +GL_LIB_NAME = @GL_LIB_NAME@ +GLU_LIB_NAME = @GLU_LIB_NAME@ +GLUT_LIB_NAME = @GLUT_LIB_NAME@ +GLW_LIB_NAME = @GLW_LIB_NAME@ +OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ +EGL_LIB_NAME = @EGL_LIB_NAME@ +GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ +GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ +VG_LIB_NAME = @VG_LIB_NAME@ +GLAPI_LIB_NAME = @GLAPI_LIB_NAME@ +WAYLAND_EGL_LIB_NAME = @WAYLAND_EGL_LIB_NAME@ + +# Globs used to install the lib and all symlinks +GL_LIB_GLOB = @GL_LIB_GLOB@ +GLU_LIB_GLOB = @GLU_LIB_GLOB@ +GLUT_LIB_GLOB = @GLUT_LIB_GLOB@ +GLW_LIB_GLOB = @GLW_LIB_GLOB@ +OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@ +EGL_LIB_GLOB = @EGL_LIB_GLOB@ +GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ +GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ +VG_LIB_GLOB = @VG_LIB_GLOB@ +GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@ +WAYLAND_EGL_LIB_GLOB = @WAYLAND_EGL_LIB_GLOB@ + +# Directories to build +LIB_DIR = @LIB_DIR@ +SRC_DIRS = @SRC_DIRS@ +GLU_DIRS = @GLU_DIRS@ +DRIVER_DIRS = @DRIVER_DIRS@ +EGL_DRIVERS_DIRS = @EGL_DRIVERS_DIRS@ +GALLIUM_DIRS = @GALLIUM_DIRS@ +GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@ +GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@ +GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@ +GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@ +GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a +GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a) + +# Driver specific build vars +DRI_DIRS = @DRI_DIRS@ +DRICORE_GLSL_LIBS = @DRICORE_GLSL_LIBS@ +DRICORE_LIBS = @DRICORE_LIBS@ +DRICORE_LIB_DEPS = @DRICORE_LIB_DEPS@ +EGL_PLATFORMS = @EGL_PLATFORMS@ +EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ + +# Dependencies +X11_INCLUDES = @X11_INCLUDES@ + +# GLw motif setup +GLW_SOURCES = @GLW_SOURCES@ +MOTIF_CFLAGS = @MOTIF_CFLAGS@ + +# Library/program dependencies +GL_LIB_DEPS = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@ +OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@ +EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @EGL_LIB_DEPS@ +GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLU_LIB_DEPS@ +GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLUT_LIB_DEPS@ +GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \ + $(EXTRA_LIB_PATH) @GLW_LIB_DEPS@ +APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@ +GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_CM_LIB_DEPS@ +GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@ +VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@ +GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) @GLAPI_LIB_DEPS@ +WAYLAND_EGL_LIB_DEPS = $(EXTRA_LIBPATH) @WAYLAND_EGL_LIB_DEPS@ + +# DRI dependencies +MESA_MODULES = @MESA_MODULES@ +DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@ +LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ +LIBDRM_LIB = @LIBDRM_LIBS@ +DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ +GLPROTO_CFLAGS = @GLPROTO_CFLAGS@ +EXPAT_INCLUDES = @EXPAT_INCLUDES@ + +# Autoconf directories +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ +includedir = @includedir@ + +# Installation directories (for make install) +INSTALL_DIR = $(prefix) +INSTALL_LIB_DIR = $(libdir) +INSTALL_INC_DIR = $(includedir) + +# DRI installation directories +DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ + +# Where libGL will look for DRI hardware drivers +DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@ + +# EGL driver install directory +EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@ + +# Xorg driver install directory (for xorg state-tracker) +XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@ + +# pkg-config substitutions +GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ +GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ +GL_PC_CFLAGS = @GL_PC_CFLAGS@ +DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@ +GLU_PC_REQ = @GLU_PC_REQ@ +GLU_PC_REQ_PRIV = @GLU_PC_REQ_PRIV@ +GLU_PC_LIB_PRIV = @GLU_PC_LIB_PRIV@ +GLU_PC_CFLAGS = @GLU_PC_CFLAGS@ +GLUT_PC_REQ_PRIV = @GLUT_PC_REQ_PRIV@ +GLUT_PC_LIB_PRIV = @GLUT_PC_LIB_PRIV@ +GLUT_PC_CFLAGS = @GLUT_PC_CFLAGS@ +GLW_PC_REQ_PRIV = @GLW_PC_REQ_PRIV@ +GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@ +GLW_PC_CFLAGS = @GLW_PC_CFLAGS@ +OSMESA_PC_REQ = @OSMESA_PC_REQ@ +OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ +GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@ +GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ +EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ +EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ +EGL_PC_CFLAGS = @GL_PC_CFLAGS@ +WAYLAND_EGL_PC_REQ_PRIV = @WAYLAND_EGL_PC_REQ_PRIV@ +WAYLAND_EGL_PC_LIB_PRIV = @WAYLAND_EGL_PC_LIB_PRIV@ +WAYLAND_EGL_PC_CFLAGS = @WAYLAND_EGL_PC_CFLAGS@ + +XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@ +XCB_DRI2_LIBS = @XCB_DRI2_LIBS@ +LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@ +LIBUDEV_LIBS = @LIBUDEV_LIBS@ +WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ +WAYLAND_LIBS = @WAYLAND_LIBS@ + +MESA_LLVM = @MESA_LLVM@ + +LLVM_VERSION = @LLVM_VERSION@ +ifneq ($(LLVM_VERSION),) + HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=)) + DEFINES += -DHAVE_LLVM=$(HAVE_LLVM) +endif + +HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c index 35d92616f..44072fbc5 100644 --- a/mesalib/src/mesa/main/bufferobj.c +++ b/mesalib/src/mesa/main/bufferobj.c @@ -558,6 +558,7 @@ void _mesa_init_buffer_objects( struct gl_context *ctx ) { memset(&DummyBufferObject, 0, sizeof(DummyBufferObject)); + _glthread_INIT_MUTEX(DummyBufferObject.Mutex); DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */ _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, diff --git a/mesalib/src/mesa/main/drawpix.c b/mesalib/src/mesa/main/drawpix.c index 98e82ef85..fb86036a1 100644 --- a/mesalib/src/mesa/main/drawpix.c +++ b/mesalib/src/mesa/main/drawpix.c @@ -136,8 +136,6 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height, GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - _mesa_finish(ctx); - if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(ctx, "glCopyPixels(%d, %d, %d, %d, %s) // from %s to %s at %d, %d\n", diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c index c242e568d..ffdd08425 100644 --- a/mesalib/src/mesa/main/fbobject.c +++ b/mesalib/src/mesa/main/fbobject.c @@ -384,6 +384,7 @@ _mesa_framebuffer_renderbuffer(struct gl_context *ctx, assert(att); _mesa_set_renderbuffer_attachment(ctx, att, rb); } + rb->AttachedAnytime = GL_TRUE; } else { _mesa_remove_attachment(ctx, att); @@ -1115,6 +1116,31 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) } +/** + * Invalidate a renderbuffer attachment. Called from _mesa_HashWalk(). + */ +static void +invalidate_rb(GLuint key, void *data, void *userData) +{ + struct gl_framebuffer *fb = (struct gl_framebuffer *) data; + struct gl_renderbuffer *rb = (struct gl_renderbuffer *) userData; + + /* If this is a user-created FBO */ + if (fb->Name) { + GLuint i; + for (i = 0; i < BUFFER_COUNT; i++) { + struct gl_renderbuffer_attachment *att = fb->Attachment + i; + if (att->Type == GL_RENDERBUFFER && + att->Renderbuffer == rb) { + /* Mark fb status as indeterminate to force re-validation */ + fb->_Status = 0; + return; + } + } + } +} + + /** sentinal value, see below */ #define NO_SAMPLES 1000 @@ -1207,12 +1233,10 @@ renderbuffer_storage(GLenum target, GLenum internalFormat, rb->NumSamples = 0; } - /* - test_framebuffer_completeness(ctx, fb); - */ - /* XXX if this renderbuffer is attached anywhere, invalidate attachment - * points??? - */ + /* Invalidate the framebuffers the renderbuffer is attached in. */ + if (rb->AttachedAnytime) { + _mesa_HashWalk(ctx->Shared->FrameBuffers, invalidate_rb, rb); + } } diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index db3eba20c..49ecea59d 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -2376,6 +2376,8 @@ struct gl_renderbuffer GLenum DataType; /**< Type of values passed to the Get/Put functions */ GLvoid *Data; /**< This may not be used by some kinds of RBs */ + GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */ + /* Used to wrap one renderbuffer around another: */ struct gl_renderbuffer *Wrapped; diff --git a/mesalib/src/mesa/state_tracker/st_cb_fbo.c b/mesalib/src/mesa/state_tracker/st_cb_fbo.c index 7e124186c..ae49434ca 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_fbo.c +++ b/mesalib/src/mesa/state_tracker/st_cb_fbo.c @@ -1,641 +1,645 @@ -/**************************************************************************
- *
- * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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.
- *
- **************************************************************************/
-
-
-/**
- * Framebuffer/renderbuffer functions.
- *
- * \author Brian Paul
- */
-
-
-#include "main/imports.h"
-#include "main/context.h"
-#include "main/fbobject.h"
-#include "main/framebuffer.h"
-#include "main/macros.h"
-#include "main/mfeatures.h"
-#include "main/renderbuffer.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_defines.h"
-#include "pipe/p_screen.h"
-#include "st_context.h"
-#include "st_cb_fbo.h"
-#include "st_cb_flush.h"
-#include "st_format.h"
-#include "st_texture.h"
-#include "st_manager.h"
-
-#include "util/u_format.h"
-#include "util/u_inlines.h"
-#include "util/u_surface.h"
-
-
-/**
- * gl_renderbuffer::AllocStorage()
- * This is called to allocate the original drawing surface, and
- * during window resize.
- */
-static GLboolean
-st_renderbuffer_alloc_storage(struct gl_context * ctx,
- struct gl_renderbuffer *rb,
- GLenum internalFormat,
- GLuint width, GLuint height)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct pipe_screen *screen = st->pipe->screen;
- struct st_renderbuffer *strb = st_renderbuffer(rb);
- enum pipe_format format;
- struct pipe_surface surf_tmpl;
-
- if (strb->format != PIPE_FORMAT_NONE)
- format = strb->format;
- else
- format = st_choose_renderbuffer_format(screen, internalFormat,
- rb->NumSamples);
-
- /* init renderbuffer fields */
- strb->Base.Width = width;
- strb->Base.Height = height;
- strb->Base.Format = st_pipe_format_to_mesa_format(format);
- strb->Base._BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
- strb->Base.DataType = st_format_datatype(format);
-
- strb->defined = GL_FALSE; /* undefined contents now */
-
- if (strb->software) {
- size_t size;
-
- free(strb->data);
-
- assert(strb->format != PIPE_FORMAT_NONE);
-
- strb->stride = util_format_get_stride(strb->format, width);
- size = util_format_get_2d_size(strb->format, strb->stride, height);
-
- strb->data = malloc(size);
-
- return strb->data != NULL;
- }
- else {
- struct pipe_resource template;
-
- /* Free the old surface and texture
- */
- pipe_surface_reference( &strb->surface, NULL );
- pipe_resource_reference( &strb->texture, NULL );
- pipe_sampler_view_reference(&strb->sampler_view, NULL);
-
- /* Setup new texture template.
- */
- memset(&template, 0, sizeof(template));
- template.target = st->internal_target;
- template.format = format;
- template.width0 = width;
- template.height0 = height;
- template.depth0 = 1;
- template.array_size = 1;
- template.last_level = 0;
- template.nr_samples = rb->NumSamples;
- if (util_format_is_depth_or_stencil(format)) {
- template.bind = PIPE_BIND_DEPTH_STENCIL;
- }
- else {
- template.bind = (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_RENDER_TARGET);
- }
-
- strb->texture = screen->resource_create(screen, &template);
-
- if (!strb->texture)
- return FALSE;
-
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- u_surface_default_template(&surf_tmpl, strb->texture, template.bind);
- strb->surface = pipe->create_surface(pipe,
- strb->texture,
- &surf_tmpl);
- if (strb->surface) {
- assert(strb->surface->texture);
- assert(strb->surface->format);
- assert(strb->surface->width == width);
- assert(strb->surface->height == height);
- }
-
- return strb->surface != NULL;
- }
-}
-
-
-/**
- * gl_renderbuffer::Delete()
- */
-static void
-st_renderbuffer_delete(struct gl_renderbuffer *rb)
-{
- struct st_renderbuffer *strb = st_renderbuffer(rb);
- ASSERT(strb);
- pipe_surface_reference(&strb->surface, NULL);
- pipe_resource_reference(&strb->texture, NULL);
- pipe_sampler_view_reference(&strb->sampler_view, NULL);
- free(strb->data);
- free(strb);
-}
-
-
-/**
- * gl_renderbuffer::GetPointer()
- */
-static void *
-null_get_pointer(struct gl_context * ctx, struct gl_renderbuffer *rb,
- GLint x, GLint y)
-{
- /* By returning NULL we force all software rendering to go through
- * the span routines.
- */
-#if 0
- assert(0); /* Should never get called with softpipe */
-#endif
- return NULL;
-}
-
-
-/**
- * Called via ctx->Driver.NewFramebuffer()
- */
-static struct gl_framebuffer *
-st_new_framebuffer(struct gl_context *ctx, GLuint name)
-{
- /* XXX not sure we need to subclass gl_framebuffer for pipe */
- return _mesa_new_framebuffer(ctx, name);
-}
-
-
-/**
- * Called via ctx->Driver.NewRenderbuffer()
- */
-static struct gl_renderbuffer *
-st_new_renderbuffer(struct gl_context *ctx, GLuint name)
-{
- struct st_renderbuffer *strb = ST_CALLOC_STRUCT(st_renderbuffer);
- if (strb) {
- _mesa_init_renderbuffer(&strb->Base, name);
- strb->Base.Delete = st_renderbuffer_delete;
- strb->Base.AllocStorage = st_renderbuffer_alloc_storage;
- strb->Base.GetPointer = null_get_pointer;
- strb->format = PIPE_FORMAT_NONE;
- return &strb->Base;
- }
- return NULL;
-}
-
-
-/**
- * Allocate a renderbuffer for a an on-screen window (not a user-created
- * renderbuffer). The window system code determines the format.
- */
-struct gl_renderbuffer *
-st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw)
-{
- struct st_renderbuffer *strb;
-
- strb = ST_CALLOC_STRUCT(st_renderbuffer);
- if (!strb) {
- _mesa_error(NULL, GL_OUT_OF_MEMORY, "creating renderbuffer");
- return NULL;
- }
-
- _mesa_init_renderbuffer(&strb->Base, 0);
- strb->Base.ClassID = 0x4242; /* just a unique value */
- strb->Base.NumSamples = samples;
- strb->Base.Format = st_pipe_format_to_mesa_format(format);
- strb->Base._BaseFormat = _mesa_get_format_base_format(strb->Base.Format);
- strb->Base.DataType = st_format_datatype(format);
- strb->format = format;
- strb->software = sw;
-
- switch (format) {
- case PIPE_FORMAT_R8G8B8A8_UNORM:
- case PIPE_FORMAT_B8G8R8A8_UNORM:
- case PIPE_FORMAT_A8R8G8B8_UNORM:
- case PIPE_FORMAT_R8G8B8X8_UNORM:
- case PIPE_FORMAT_B8G8R8X8_UNORM:
- case PIPE_FORMAT_X8R8G8B8_UNORM:
- case PIPE_FORMAT_B5G5R5A1_UNORM:
- case PIPE_FORMAT_B4G4R4A4_UNORM:
- case PIPE_FORMAT_B5G6R5_UNORM:
- strb->Base.InternalFormat = GL_RGBA;
- break;
- case PIPE_FORMAT_Z16_UNORM:
- strb->Base.InternalFormat = GL_DEPTH_COMPONENT16;
- break;
- case PIPE_FORMAT_Z32_UNORM:
- strb->Base.InternalFormat = GL_DEPTH_COMPONENT32;
- break;
- case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
- case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
- case PIPE_FORMAT_Z24X8_UNORM:
- case PIPE_FORMAT_X8Z24_UNORM:
- strb->Base.InternalFormat = GL_DEPTH24_STENCIL8_EXT;
- break;
- case PIPE_FORMAT_S8_USCALED:
- strb->Base.InternalFormat = GL_STENCIL_INDEX8_EXT;
- break;
- case PIPE_FORMAT_R16G16B16A16_SNORM:
- strb->Base.InternalFormat = GL_RGBA16;
- break;
- case PIPE_FORMAT_R8_UNORM:
- strb->Base.InternalFormat = GL_R8;
- break;
- case PIPE_FORMAT_R8G8_UNORM:
- strb->Base.InternalFormat = GL_RG8;
- break;
- case PIPE_FORMAT_R16_UNORM:
- strb->Base.InternalFormat = GL_R16;
- break;
- case PIPE_FORMAT_R16G16_UNORM:
- strb->Base.InternalFormat = GL_RG16;
- break;
- default:
- _mesa_problem(NULL,
- "Unexpected format in st_new_renderbuffer_fb");
- free(strb);
- return NULL;
- }
-
- /* st-specific methods */
- strb->Base.Delete = st_renderbuffer_delete;
- strb->Base.AllocStorage = st_renderbuffer_alloc_storage;
- strb->Base.GetPointer = null_get_pointer;
-
- /* surface is allocated in st_renderbuffer_alloc_storage() */
- strb->surface = NULL;
-
- return &strb->Base;
-}
-
-
-
-
-/**
- * Called via ctx->Driver.BindFramebufferEXT().
- */
-static void
-st_bind_framebuffer(struct gl_context *ctx, GLenum target,
- struct gl_framebuffer *fb, struct gl_framebuffer *fbread)
-{
-
-}
-
-/**
- * Called by ctx->Driver.FramebufferRenderbuffer
- */
-static void
-st_framebuffer_renderbuffer(struct gl_context *ctx,
- struct gl_framebuffer *fb,
- GLenum attachment,
- struct gl_renderbuffer *rb)
-{
- /* XXX no need for derivation? */
- _mesa_framebuffer_renderbuffer(ctx, fb, attachment, rb);
-}
-
-
-/**
- * Called by ctx->Driver.RenderTexture
- */
-static void
-st_render_texture(struct gl_context *ctx,
- struct gl_framebuffer *fb,
- struct gl_renderbuffer_attachment *att)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_context *pipe = st->pipe;
- struct st_renderbuffer *strb;
- struct gl_renderbuffer *rb;
- struct pipe_resource *pt = st_get_texobj_resource(att->Texture);
- struct st_texture_object *stObj;
- const struct gl_texture_image *texImage;
- struct pipe_surface surf_tmpl;
-
- /* When would this fail? Perhaps assert? */
- if (!pt)
- return;
-
- /* get pointer to texture image we're rendeing to */
- texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
-
- /* create new renderbuffer which wraps the texture image */
- rb = st_new_renderbuffer(ctx, 0);
- if (!rb) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glFramebufferTexture()");
- return;
- }
-
- _mesa_reference_renderbuffer(&att->Renderbuffer, rb);
- assert(rb->RefCount == 1);
- rb->AllocStorage = NULL; /* should not get called */
- strb = st_renderbuffer(rb);
-
- assert(strb->Base.RefCount > 0);
-
- /* get the texture for the texture object */
- stObj = st_texture_object(att->Texture);
-
- /* point renderbuffer at texobject */
- strb->rtt = stObj;
- strb->rtt_level = att->TextureLevel;
- strb->rtt_face = att->CubeMapFace;
- strb->rtt_slice = att->Zoffset;
-
- rb->Width = texImage->Width2;
- rb->Height = texImage->Height2;
- rb->_BaseFormat = texImage->_BaseFormat;
- /*printf("***** render to texture level %d: %d x %d\n", att->TextureLevel, rb->Width, rb->Height);*/
-
- /*printf("***** pipe texture %d x %d\n", pt->width0, pt->height0);*/
-
- pipe_resource_reference( &strb->texture, pt );
-
- pipe_surface_reference(&strb->surface, NULL);
-
- pipe_sampler_view_reference(&strb->sampler_view,
- st_get_texture_sampler_view(stObj, pipe));
-
- assert(strb->rtt_level <= strb->texture->last_level);
-
- /* new surface for rendering into the texture */
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- surf_tmpl.format = ctx->Color.sRGBEnabled ? strb->texture->format : util_format_linear(strb->texture->format);
- surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
- surf_tmpl.u.tex.level = strb->rtt_level;
- surf_tmpl.u.tex.first_layer = strb->rtt_face + strb->rtt_slice;
- surf_tmpl.u.tex.last_layer = strb->rtt_face + strb->rtt_slice;
- strb->surface = pipe->create_surface(pipe,
- strb->texture,
- &surf_tmpl);
-
- strb->format = pt->format;
-
- strb->Base.Format = st_pipe_format_to_mesa_format(pt->format);
- strb->Base.DataType = st_format_datatype(pt->format);
-
- /*
- printf("RENDER TO TEXTURE obj=%p pt=%p surf=%p %d x %d\n",
- att->Texture, pt, strb->surface, rb->Width, rb->Height);
- */
-
- /* Invalidate buffer state so that the pipe's framebuffer state
- * gets updated.
- * That's where the new renderbuffer (which we just created) gets
- * passed to the pipe as a (color/depth) render target.
- */
- st_invalidate_state(ctx, _NEW_BUFFERS);
-}
-
-
-/**
- * Called via ctx->Driver.FinishRenderTexture.
- */
-static void
-st_finish_render_texture(struct gl_context *ctx,
- struct gl_renderbuffer_attachment *att)
-{
- struct st_context *st = st_context(ctx);
- struct st_renderbuffer *strb = st_renderbuffer(att->Renderbuffer);
-
- if (!strb)
- return;
-
- st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
-
- strb->rtt = NULL;
-
- /*
- printf("FINISH RENDER TO TEXTURE surf=%p\n", strb->surface);
- */
-
- /* restore previous framebuffer state */
- st_invalidate_state(ctx, _NEW_BUFFERS);
-}
-
-
-/**
- * Validate a renderbuffer attachment for a particular set of bindings.
- */
-static GLboolean
-st_validate_attachment(struct gl_context *ctx,
- struct pipe_screen *screen,
- const struct gl_renderbuffer_attachment *att,
- unsigned bindings)
-{
- const struct st_texture_object *stObj = st_texture_object(att->Texture);
- enum pipe_format format;
- gl_format texFormat;
-
- /* Only validate texture attachments for now, since
- * st_renderbuffer_alloc_storage makes sure that
- * the format is supported.
- */
- if (att->Type != GL_TEXTURE)
- return GL_TRUE;
-
- if (!stObj)
- return GL_FALSE;
-
- format = stObj->pt->format;
- texFormat =
- stObj->base.Image[att->CubeMapFace][att->TextureLevel]->TexFormat;
-
- /* If the encoding is sRGB and sRGB rendering cannot be enabled,
- * check for linear format support instead.
- * Later when we create a surface, we change the format to a linear one. */
- if (!ctx->Const.sRGBCapable &&
- _mesa_get_format_color_encoding(texFormat) == GL_SRGB) {
- const gl_format linearFormat = _mesa_get_srgb_format_linear(texFormat);
- format = st_mesa_format_to_pipe_format(linearFormat);
- }
-
- return screen->is_format_supported(screen, format,
- PIPE_TEXTURE_2D,
- stObj->pt->nr_samples, bindings, 0);
-}
-
-
-/**
- * Check if two renderbuffer attachments name a combined depth/stencil
- * renderbuffer.
- */
-GLboolean
-st_is_depth_stencil_combined(const struct gl_renderbuffer_attachment *depth,
- const struct gl_renderbuffer_attachment *stencil)
-{
- assert(depth && stencil);
-
- if (depth->Type == stencil->Type) {
- if (depth->Type == GL_RENDERBUFFER_EXT &&
- depth->Renderbuffer == stencil->Renderbuffer)
- return GL_TRUE;
-
- if (depth->Type == GL_TEXTURE &&
- depth->Texture == stencil->Texture)
- return GL_TRUE;
- }
-
- return GL_FALSE;
-}
-
-
-/**
- * Check that the framebuffer configuration is valid in terms of what
- * the driver can support.
- *
- * For Gallium we only supports combined Z+stencil, not separate buffers.
- */
-static void
-st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb)
-{
- struct st_context *st = st_context(ctx);
- struct pipe_screen *screen = st->pipe->screen;
- const struct gl_renderbuffer_attachment *depth =
- &fb->Attachment[BUFFER_DEPTH];
- const struct gl_renderbuffer_attachment *stencil =
- &fb->Attachment[BUFFER_STENCIL];
- GLuint i;
-
- if (depth->Type && stencil->Type && depth->Type != stencil->Type) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
- if (depth->Type == GL_RENDERBUFFER_EXT &&
- stencil->Type == GL_RENDERBUFFER_EXT &&
- depth->Renderbuffer != stencil->Renderbuffer) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
- if (depth->Type == GL_TEXTURE &&
- stencil->Type == GL_TEXTURE &&
- depth->Texture != stencil->Texture) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
-
- if (!st_validate_attachment(ctx,
- screen,
- depth,
- PIPE_BIND_DEPTH_STENCIL)) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
- if (!st_validate_attachment(ctx,
- screen,
- stencil,
- PIPE_BIND_DEPTH_STENCIL)) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
- for (i = 0; i < ctx->Const.MaxColorAttachments; i++) {
- if (!st_validate_attachment(ctx,
- screen,
- &fb->Attachment[BUFFER_COLOR0 + i],
- PIPE_BIND_RENDER_TARGET)) {
- fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
- return;
- }
- }
-}
-
-
-/**
- * Called via glDrawBuffer.
- */
-static void
-st_DrawBuffers(struct gl_context *ctx, GLsizei count, const GLenum *buffers)
-{
- struct st_context *st = st_context(ctx);
- struct gl_framebuffer *fb = ctx->DrawBuffer;
- GLuint i;
-
- (void) count;
- (void) buffers;
-
- /* add the renderbuffers on demand */
- for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
- gl_buffer_index idx = fb->_ColorDrawBufferIndexes[i];
- st_manager_add_color_renderbuffer(st, fb, idx);
- }
-}
-
-
-/**
- * Called via glReadBuffer.
- */
-static void
-st_ReadBuffer(struct gl_context *ctx, GLenum buffer)
-{
- struct st_context *st = st_context(ctx);
- struct gl_framebuffer *fb = ctx->ReadBuffer;
-
- (void) buffer;
-
- /* add the renderbuffer on demand */
- st_manager_add_color_renderbuffer(st, fb, fb->_ColorReadBufferIndex);
-}
-
-
-void st_init_fbo_functions(struct dd_function_table *functions)
-{
-#if FEATURE_EXT_framebuffer_object
- functions->NewFramebuffer = st_new_framebuffer;
- functions->NewRenderbuffer = st_new_renderbuffer;
- functions->BindFramebuffer = st_bind_framebuffer;
- functions->FramebufferRenderbuffer = st_framebuffer_renderbuffer;
- functions->RenderTexture = st_render_texture;
- functions->FinishRenderTexture = st_finish_render_texture;
- functions->ValidateFramebuffer = st_validate_framebuffer;
-#endif
- /* no longer needed by core Mesa, drivers handle resizes...
- functions->ResizeBuffers = st_resize_buffers;
- */
-
- functions->DrawBuffers = st_DrawBuffers;
- functions->ReadBuffer = st_ReadBuffer;
-}
-
-/* XXX unused ? */
-struct pipe_sampler_view *
-st_get_renderbuffer_sampler_view(struct st_renderbuffer *rb,
- struct pipe_context *pipe)
-{
- if (!rb->sampler_view) {
- rb->sampler_view = st_create_texture_sampler_view(pipe, rb->texture);
- }
-
- return rb->sampler_view;
-}
+/************************************************************************** + * + * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS 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. + * + **************************************************************************/ + + +/** + * Framebuffer/renderbuffer functions. + * + * \author Brian Paul + */ + + +#include "main/imports.h" +#include "main/context.h" +#include "main/fbobject.h" +#include "main/framebuffer.h" +#include "main/macros.h" +#include "main/mfeatures.h" +#include "main/renderbuffer.h" + +#include "pipe/p_context.h" +#include "pipe/p_defines.h" +#include "pipe/p_screen.h" +#include "st_context.h" +#include "st_cb_fbo.h" +#include "st_cb_flush.h" +#include "st_format.h" +#include "st_texture.h" +#include "st_manager.h" + +#include "util/u_format.h" +#include "util/u_inlines.h" +#include "util/u_surface.h" + + +/** + * gl_renderbuffer::AllocStorage() + * This is called to allocate the original drawing surface, and + * during window resize. + */ +static GLboolean +st_renderbuffer_alloc_storage(struct gl_context * ctx, + struct gl_renderbuffer *rb, + GLenum internalFormat, + GLuint width, GLuint height) +{ + struct st_context *st = st_context(ctx); + struct pipe_context *pipe = st->pipe; + struct pipe_screen *screen = st->pipe->screen; + struct st_renderbuffer *strb = st_renderbuffer(rb); + enum pipe_format format; + struct pipe_surface surf_tmpl; + + if (strb->format != PIPE_FORMAT_NONE) + format = strb->format; + else + format = st_choose_renderbuffer_format(screen, internalFormat, + rb->NumSamples); + + if (format == PIPE_FORMAT_NONE) { + return FALSE; + } + + /* init renderbuffer fields */ + strb->Base.Width = width; + strb->Base.Height = height; + strb->Base.Format = st_pipe_format_to_mesa_format(format); + strb->Base._BaseFormat = _mesa_base_fbo_format(ctx, internalFormat); + strb->Base.DataType = st_format_datatype(format); + + strb->defined = GL_FALSE; /* undefined contents now */ + + if (strb->software) { + size_t size; + + free(strb->data); + + assert(strb->format != PIPE_FORMAT_NONE); + + strb->stride = util_format_get_stride(strb->format, width); + size = util_format_get_2d_size(strb->format, strb->stride, height); + + strb->data = malloc(size); + + return strb->data != NULL; + } + else { + struct pipe_resource template; + + /* Free the old surface and texture + */ + pipe_surface_reference( &strb->surface, NULL ); + pipe_resource_reference( &strb->texture, NULL ); + pipe_sampler_view_reference(&strb->sampler_view, NULL); + + /* Setup new texture template. + */ + memset(&template, 0, sizeof(template)); + template.target = st->internal_target; + template.format = format; + template.width0 = width; + template.height0 = height; + template.depth0 = 1; + template.array_size = 1; + template.last_level = 0; + template.nr_samples = rb->NumSamples; + if (util_format_is_depth_or_stencil(format)) { + template.bind = PIPE_BIND_DEPTH_STENCIL; + } + else { + template.bind = (PIPE_BIND_DISPLAY_TARGET | + PIPE_BIND_RENDER_TARGET); + } + + strb->texture = screen->resource_create(screen, &template); + + if (!strb->texture) + return FALSE; + + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + u_surface_default_template(&surf_tmpl, strb->texture, template.bind); + strb->surface = pipe->create_surface(pipe, + strb->texture, + &surf_tmpl); + if (strb->surface) { + assert(strb->surface->texture); + assert(strb->surface->format); + assert(strb->surface->width == width); + assert(strb->surface->height == height); + } + + return strb->surface != NULL; + } +} + + +/** + * gl_renderbuffer::Delete() + */ +static void +st_renderbuffer_delete(struct gl_renderbuffer *rb) +{ + struct st_renderbuffer *strb = st_renderbuffer(rb); + ASSERT(strb); + pipe_surface_reference(&strb->surface, NULL); + pipe_resource_reference(&strb->texture, NULL); + pipe_sampler_view_reference(&strb->sampler_view, NULL); + free(strb->data); + free(strb); +} + + +/** + * gl_renderbuffer::GetPointer() + */ +static void * +null_get_pointer(struct gl_context * ctx, struct gl_renderbuffer *rb, + GLint x, GLint y) +{ + /* By returning NULL we force all software rendering to go through + * the span routines. + */ +#if 0 + assert(0); /* Should never get called with softpipe */ +#endif + return NULL; +} + + +/** + * Called via ctx->Driver.NewFramebuffer() + */ +static struct gl_framebuffer * +st_new_framebuffer(struct gl_context *ctx, GLuint name) +{ + /* XXX not sure we need to subclass gl_framebuffer for pipe */ + return _mesa_new_framebuffer(ctx, name); +} + + +/** + * Called via ctx->Driver.NewRenderbuffer() + */ +static struct gl_renderbuffer * +st_new_renderbuffer(struct gl_context *ctx, GLuint name) +{ + struct st_renderbuffer *strb = ST_CALLOC_STRUCT(st_renderbuffer); + if (strb) { + _mesa_init_renderbuffer(&strb->Base, name); + strb->Base.Delete = st_renderbuffer_delete; + strb->Base.AllocStorage = st_renderbuffer_alloc_storage; + strb->Base.GetPointer = null_get_pointer; + strb->format = PIPE_FORMAT_NONE; + return &strb->Base; + } + return NULL; +} + + +/** + * Allocate a renderbuffer for a an on-screen window (not a user-created + * renderbuffer). The window system code determines the format. + */ +struct gl_renderbuffer * +st_new_renderbuffer_fb(enum pipe_format format, int samples, boolean sw) +{ + struct st_renderbuffer *strb; + + strb = ST_CALLOC_STRUCT(st_renderbuffer); + if (!strb) { + _mesa_error(NULL, GL_OUT_OF_MEMORY, "creating renderbuffer"); + return NULL; + } + + _mesa_init_renderbuffer(&strb->Base, 0); + strb->Base.ClassID = 0x4242; /* just a unique value */ + strb->Base.NumSamples = samples; + strb->Base.Format = st_pipe_format_to_mesa_format(format); + strb->Base._BaseFormat = _mesa_get_format_base_format(strb->Base.Format); + strb->Base.DataType = st_format_datatype(format); + strb->format = format; + strb->software = sw; + + switch (format) { + case PIPE_FORMAT_R8G8B8A8_UNORM: + case PIPE_FORMAT_B8G8R8A8_UNORM: + case PIPE_FORMAT_A8R8G8B8_UNORM: + case PIPE_FORMAT_R8G8B8X8_UNORM: + case PIPE_FORMAT_B8G8R8X8_UNORM: + case PIPE_FORMAT_X8R8G8B8_UNORM: + case PIPE_FORMAT_B5G5R5A1_UNORM: + case PIPE_FORMAT_B4G4R4A4_UNORM: + case PIPE_FORMAT_B5G6R5_UNORM: + strb->Base.InternalFormat = GL_RGBA; + break; + case PIPE_FORMAT_Z16_UNORM: + strb->Base.InternalFormat = GL_DEPTH_COMPONENT16; + break; + case PIPE_FORMAT_Z32_UNORM: + strb->Base.InternalFormat = GL_DEPTH_COMPONENT32; + break; + case PIPE_FORMAT_Z24_UNORM_S8_USCALED: + case PIPE_FORMAT_S8_USCALED_Z24_UNORM: + case PIPE_FORMAT_Z24X8_UNORM: + case PIPE_FORMAT_X8Z24_UNORM: + strb->Base.InternalFormat = GL_DEPTH24_STENCIL8_EXT; + break; + case PIPE_FORMAT_S8_USCALED: + strb->Base.InternalFormat = GL_STENCIL_INDEX8_EXT; + break; + case PIPE_FORMAT_R16G16B16A16_SNORM: + strb->Base.InternalFormat = GL_RGBA16; + break; + case PIPE_FORMAT_R8_UNORM: + strb->Base.InternalFormat = GL_R8; + break; + case PIPE_FORMAT_R8G8_UNORM: + strb->Base.InternalFormat = GL_RG8; + break; + case PIPE_FORMAT_R16_UNORM: + strb->Base.InternalFormat = GL_R16; + break; + case PIPE_FORMAT_R16G16_UNORM: + strb->Base.InternalFormat = GL_RG16; + break; + default: + _mesa_problem(NULL, + "Unexpected format in st_new_renderbuffer_fb"); + free(strb); + return NULL; + } + + /* st-specific methods */ + strb->Base.Delete = st_renderbuffer_delete; + strb->Base.AllocStorage = st_renderbuffer_alloc_storage; + strb->Base.GetPointer = null_get_pointer; + + /* surface is allocated in st_renderbuffer_alloc_storage() */ + strb->surface = NULL; + + return &strb->Base; +} + + + + +/** + * Called via ctx->Driver.BindFramebufferEXT(). + */ +static void +st_bind_framebuffer(struct gl_context *ctx, GLenum target, + struct gl_framebuffer *fb, struct gl_framebuffer *fbread) +{ + +} + +/** + * Called by ctx->Driver.FramebufferRenderbuffer + */ +static void +st_framebuffer_renderbuffer(struct gl_context *ctx, + struct gl_framebuffer *fb, + GLenum attachment, + struct gl_renderbuffer *rb) +{ + /* XXX no need for derivation? */ + _mesa_framebuffer_renderbuffer(ctx, fb, attachment, rb); +} + + +/** + * Called by ctx->Driver.RenderTexture + */ +static void +st_render_texture(struct gl_context *ctx, + struct gl_framebuffer *fb, + struct gl_renderbuffer_attachment *att) +{ + struct st_context *st = st_context(ctx); + struct pipe_context *pipe = st->pipe; + struct st_renderbuffer *strb; + struct gl_renderbuffer *rb; + struct pipe_resource *pt = st_get_texobj_resource(att->Texture); + struct st_texture_object *stObj; + const struct gl_texture_image *texImage; + struct pipe_surface surf_tmpl; + + /* When would this fail? Perhaps assert? */ + if (!pt) + return; + + /* get pointer to texture image we're rendeing to */ + texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + + /* create new renderbuffer which wraps the texture image */ + rb = st_new_renderbuffer(ctx, 0); + if (!rb) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glFramebufferTexture()"); + return; + } + + _mesa_reference_renderbuffer(&att->Renderbuffer, rb); + assert(rb->RefCount == 1); + rb->AllocStorage = NULL; /* should not get called */ + strb = st_renderbuffer(rb); + + assert(strb->Base.RefCount > 0); + + /* get the texture for the texture object */ + stObj = st_texture_object(att->Texture); + + /* point renderbuffer at texobject */ + strb->rtt = stObj; + strb->rtt_level = att->TextureLevel; + strb->rtt_face = att->CubeMapFace; + strb->rtt_slice = att->Zoffset; + + rb->Width = texImage->Width2; + rb->Height = texImage->Height2; + rb->_BaseFormat = texImage->_BaseFormat; + /*printf("***** render to texture level %d: %d x %d\n", att->TextureLevel, rb->Width, rb->Height);*/ + + /*printf("***** pipe texture %d x %d\n", pt->width0, pt->height0);*/ + + pipe_resource_reference( &strb->texture, pt ); + + pipe_surface_reference(&strb->surface, NULL); + + pipe_sampler_view_reference(&strb->sampler_view, + st_get_texture_sampler_view(stObj, pipe)); + + assert(strb->rtt_level <= strb->texture->last_level); + + /* new surface for rendering into the texture */ + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = ctx->Color.sRGBEnabled ? strb->texture->format : util_format_linear(strb->texture->format); + surf_tmpl.usage = PIPE_BIND_RENDER_TARGET; + surf_tmpl.u.tex.level = strb->rtt_level; + surf_tmpl.u.tex.first_layer = strb->rtt_face + strb->rtt_slice; + surf_tmpl.u.tex.last_layer = strb->rtt_face + strb->rtt_slice; + strb->surface = pipe->create_surface(pipe, + strb->texture, + &surf_tmpl); + + strb->format = pt->format; + + strb->Base.Format = st_pipe_format_to_mesa_format(pt->format); + strb->Base.DataType = st_format_datatype(pt->format); + + /* + printf("RENDER TO TEXTURE obj=%p pt=%p surf=%p %d x %d\n", + att->Texture, pt, strb->surface, rb->Width, rb->Height); + */ + + /* Invalidate buffer state so that the pipe's framebuffer state + * gets updated. + * That's where the new renderbuffer (which we just created) gets + * passed to the pipe as a (color/depth) render target. + */ + st_invalidate_state(ctx, _NEW_BUFFERS); +} + + +/** + * Called via ctx->Driver.FinishRenderTexture. + */ +static void +st_finish_render_texture(struct gl_context *ctx, + struct gl_renderbuffer_attachment *att) +{ + struct st_context *st = st_context(ctx); + struct st_renderbuffer *strb = st_renderbuffer(att->Renderbuffer); + + if (!strb) + return; + + st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL); + + strb->rtt = NULL; + + /* + printf("FINISH RENDER TO TEXTURE surf=%p\n", strb->surface); + */ + + /* restore previous framebuffer state */ + st_invalidate_state(ctx, _NEW_BUFFERS); +} + + +/** + * Validate a renderbuffer attachment for a particular set of bindings. + */ +static GLboolean +st_validate_attachment(struct gl_context *ctx, + struct pipe_screen *screen, + const struct gl_renderbuffer_attachment *att, + unsigned bindings) +{ + const struct st_texture_object *stObj = st_texture_object(att->Texture); + enum pipe_format format; + gl_format texFormat; + + /* Only validate texture attachments for now, since + * st_renderbuffer_alloc_storage makes sure that + * the format is supported. + */ + if (att->Type != GL_TEXTURE) + return GL_TRUE; + + if (!stObj) + return GL_FALSE; + + format = stObj->pt->format; + texFormat = + stObj->base.Image[att->CubeMapFace][att->TextureLevel]->TexFormat; + + /* If the encoding is sRGB and sRGB rendering cannot be enabled, + * check for linear format support instead. + * Later when we create a surface, we change the format to a linear one. */ + if (!ctx->Const.sRGBCapable && + _mesa_get_format_color_encoding(texFormat) == GL_SRGB) { + const gl_format linearFormat = _mesa_get_srgb_format_linear(texFormat); + format = st_mesa_format_to_pipe_format(linearFormat); + } + + return screen->is_format_supported(screen, format, + PIPE_TEXTURE_2D, + stObj->pt->nr_samples, bindings, 0); +} + + +/** + * Check if two renderbuffer attachments name a combined depth/stencil + * renderbuffer. + */ +GLboolean +st_is_depth_stencil_combined(const struct gl_renderbuffer_attachment *depth, + const struct gl_renderbuffer_attachment *stencil) +{ + assert(depth && stencil); + + if (depth->Type == stencil->Type) { + if (depth->Type == GL_RENDERBUFFER_EXT && + depth->Renderbuffer == stencil->Renderbuffer) + return GL_TRUE; + + if (depth->Type == GL_TEXTURE && + depth->Texture == stencil->Texture) + return GL_TRUE; + } + + return GL_FALSE; +} + + +/** + * Check that the framebuffer configuration is valid in terms of what + * the driver can support. + * + * For Gallium we only supports combined Z+stencil, not separate buffers. + */ +static void +st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) +{ + struct st_context *st = st_context(ctx); + struct pipe_screen *screen = st->pipe->screen; + const struct gl_renderbuffer_attachment *depth = + &fb->Attachment[BUFFER_DEPTH]; + const struct gl_renderbuffer_attachment *stencil = + &fb->Attachment[BUFFER_STENCIL]; + GLuint i; + + if (depth->Type && stencil->Type && depth->Type != stencil->Type) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + if (depth->Type == GL_RENDERBUFFER_EXT && + stencil->Type == GL_RENDERBUFFER_EXT && + depth->Renderbuffer != stencil->Renderbuffer) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + if (depth->Type == GL_TEXTURE && + stencil->Type == GL_TEXTURE && + depth->Texture != stencil->Texture) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + + if (!st_validate_attachment(ctx, + screen, + depth, + PIPE_BIND_DEPTH_STENCIL)) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + if (!st_validate_attachment(ctx, + screen, + stencil, + PIPE_BIND_DEPTH_STENCIL)) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + for (i = 0; i < ctx->Const.MaxColorAttachments; i++) { + if (!st_validate_attachment(ctx, + screen, + &fb->Attachment[BUFFER_COLOR0 + i], + PIPE_BIND_RENDER_TARGET)) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + } +} + + +/** + * Called via glDrawBuffer. + */ +static void +st_DrawBuffers(struct gl_context *ctx, GLsizei count, const GLenum *buffers) +{ + struct st_context *st = st_context(ctx); + struct gl_framebuffer *fb = ctx->DrawBuffer; + GLuint i; + + (void) count; + (void) buffers; + + /* add the renderbuffers on demand */ + for (i = 0; i < fb->_NumColorDrawBuffers; i++) { + gl_buffer_index idx = fb->_ColorDrawBufferIndexes[i]; + st_manager_add_color_renderbuffer(st, fb, idx); + } +} + + +/** + * Called via glReadBuffer. + */ +static void +st_ReadBuffer(struct gl_context *ctx, GLenum buffer) +{ + struct st_context *st = st_context(ctx); + struct gl_framebuffer *fb = ctx->ReadBuffer; + + (void) buffer; + + /* add the renderbuffer on demand */ + st_manager_add_color_renderbuffer(st, fb, fb->_ColorReadBufferIndex); +} + + +void st_init_fbo_functions(struct dd_function_table *functions) +{ +#if FEATURE_EXT_framebuffer_object + functions->NewFramebuffer = st_new_framebuffer; + functions->NewRenderbuffer = st_new_renderbuffer; + functions->BindFramebuffer = st_bind_framebuffer; + functions->FramebufferRenderbuffer = st_framebuffer_renderbuffer; + functions->RenderTexture = st_render_texture; + functions->FinishRenderTexture = st_finish_render_texture; + functions->ValidateFramebuffer = st_validate_framebuffer; +#endif + /* no longer needed by core Mesa, drivers handle resizes... + functions->ResizeBuffers = st_resize_buffers; + */ + + functions->DrawBuffers = st_DrawBuffers; + functions->ReadBuffer = st_ReadBuffer; +} + +/* XXX unused ? */ +struct pipe_sampler_view * +st_get_renderbuffer_sampler_view(struct st_renderbuffer *rb, + struct pipe_context *pipe) +{ + if (!rb->sampler_view) { + rb->sampler_view = st_create_texture_sampler_view(pipe, rb->texture); + } + + return rb->sampler_view; +} diff --git a/mesalib/src/mesa/state_tracker/st_manager.c b/mesalib/src/mesa/state_tracker/st_manager.c index 5684e9768..d85bcd4f7 100644 --- a/mesalib/src/mesa/state_tracker/st_manager.c +++ b/mesalib/src/mesa/state_tracker/st_manager.c @@ -1,922 +1,923 @@ -/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include "state_tracker/st_gl_api.h"
-
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-#include "util/u_format.h"
-#include "util/u_pointer.h"
-#include "util/u_inlines.h"
-#include "util/u_atomic.h"
-#include "util/u_surface.h"
-
-#include "main/mtypes.h"
-#include "main/context.h"
-#include "main/mfeatures.h"
-#include "main/texobj.h"
-#include "main/teximage.h"
-#include "main/texstate.h"
-#include "main/framebuffer.h"
-#include "main/fbobject.h"
-#include "main/renderbuffer.h"
-#include "main/version.h"
-#include "st_texture.h"
-
-#include "st_context.h"
-#include "st_format.h"
-#include "st_cb_fbo.h"
-#include "st_cb_flush.h"
-#include "st_manager.h"
-
-/**
- * Cast wrapper to convert a struct gl_framebuffer to an st_framebuffer.
- * Return NULL if the struct gl_framebuffer is a user-created framebuffer.
- * We'll only return non-null for window system framebuffers.
- * Note that this function may fail.
- */
-static INLINE struct st_framebuffer *
-st_ws_framebuffer(struct gl_framebuffer *fb)
-{
- /* FBO cannot be casted. See st_new_framebuffer */
- return (struct st_framebuffer *) ((fb && !fb->Name) ? fb : NULL);
-}
-
-/**
- * Map an attachment to a buffer index.
- */
-static INLINE gl_buffer_index
-attachment_to_buffer_index(enum st_attachment_type statt)
-{
- gl_buffer_index index;
-
- switch (statt) {
- case ST_ATTACHMENT_FRONT_LEFT:
- index = BUFFER_FRONT_LEFT;
- break;
- case ST_ATTACHMENT_BACK_LEFT:
- index = BUFFER_BACK_LEFT;
- break;
- case ST_ATTACHMENT_FRONT_RIGHT:
- index = BUFFER_FRONT_RIGHT;
- break;
- case ST_ATTACHMENT_BACK_RIGHT:
- index = BUFFER_BACK_RIGHT;
- break;
- case ST_ATTACHMENT_DEPTH_STENCIL:
- index = BUFFER_DEPTH;
- break;
- case ST_ATTACHMENT_ACCUM:
- index = BUFFER_ACCUM;
- break;
- case ST_ATTACHMENT_SAMPLE:
- default:
- index = BUFFER_COUNT;
- break;
- }
-
- return index;
-}
-
-/**
- * Map a buffer index to an attachment.
- */
-static INLINE enum st_attachment_type
-buffer_index_to_attachment(gl_buffer_index index)
-{
- enum st_attachment_type statt;
-
- switch (index) {
- case BUFFER_FRONT_LEFT:
- statt = ST_ATTACHMENT_FRONT_LEFT;
- break;
- case BUFFER_BACK_LEFT:
- statt = ST_ATTACHMENT_BACK_LEFT;
- break;
- case BUFFER_FRONT_RIGHT:
- statt = ST_ATTACHMENT_FRONT_RIGHT;
- break;
- case BUFFER_BACK_RIGHT:
- statt = ST_ATTACHMENT_BACK_RIGHT;
- break;
- case BUFFER_DEPTH:
- statt = ST_ATTACHMENT_DEPTH_STENCIL;
- break;
- case BUFFER_ACCUM:
- statt = ST_ATTACHMENT_ACCUM;
- break;
- default:
- statt = ST_ATTACHMENT_INVALID;
- break;
- }
-
- return statt;
-}
-
-/**
- * Validate a framebuffer to make sure up-to-date pipe_textures are used.
- */
-static void
-st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st)
-{
- struct pipe_context *pipe = st->pipe;
- struct pipe_resource *textures[ST_ATTACHMENT_COUNT];
- uint width, height;
- unsigned i;
- boolean changed = FALSE;
-
- if (!p_atomic_read(&stfb->revalidate))
- return;
-
- /* validate the fb */
- if (!stfb->iface->validate(stfb->iface, stfb->statts, stfb->num_statts, textures))
- return;
-
- width = stfb->Base.Width;
- height = stfb->Base.Height;
-
- for (i = 0; i < stfb->num_statts; i++) {
- struct st_renderbuffer *strb;
- struct pipe_surface *ps, surf_tmpl;
- gl_buffer_index idx;
-
- if (!textures[i])
- continue;
-
- idx = attachment_to_buffer_index(stfb->statts[i]);
- if (idx >= BUFFER_COUNT) {
- pipe_resource_reference(&textures[i], NULL);
- continue;
- }
-
- strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer);
- assert(strb);
- if (strb->texture == textures[i]) {
- pipe_resource_reference(&textures[i], NULL);
- continue;
- }
-
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- u_surface_default_template(&surf_tmpl, textures[i],
- PIPE_BIND_RENDER_TARGET);
- ps = pipe->create_surface(pipe, textures[i], &surf_tmpl);
- if (ps) {
- pipe_surface_reference(&strb->surface, ps);
- pipe_resource_reference(&strb->texture, ps->texture);
- /* ownership transfered */
- pipe_surface_reference(&ps, NULL);
-
- changed = TRUE;
-
- strb->Base.Width = strb->surface->width;
- strb->Base.Height = strb->surface->height;
-
- width = strb->Base.Width;
- height = strb->Base.Height;
- }
-
- pipe_resource_reference(&textures[i], NULL);
- }
-
- if (changed) {
- st->dirty.st |= ST_NEW_FRAMEBUFFER;
- _mesa_resize_framebuffer(st->ctx, &stfb->Base, width, height);
-
- assert(stfb->Base.Width == width);
- assert(stfb->Base.Height == height);
- }
-
- p_atomic_set(&stfb->revalidate, FALSE);
-}
-
-/**
- * Update the attachments to validate by looping the existing renderbuffers.
- */
-static void
-st_framebuffer_update_attachments(struct st_framebuffer *stfb)
-{
- gl_buffer_index idx;
-
- stfb->num_statts = 0;
- for (idx = 0; idx < BUFFER_COUNT; idx++) {
- struct st_renderbuffer *strb;
- enum st_attachment_type statt;
-
- strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer);
- if (!strb || strb->software)
- continue;
-
- statt = buffer_index_to_attachment(idx);
- if (statt != ST_ATTACHMENT_INVALID &&
- st_visual_have_buffers(stfb->iface->visual, 1 << statt))
- stfb->statts[stfb->num_statts++] = statt;
- }
-
- p_atomic_set(&stfb->revalidate, TRUE);
-}
-
-/**
- * Add a renderbuffer to the framebuffer.
- */
-static boolean
-st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb,
- gl_buffer_index idx)
-{
- struct gl_renderbuffer *rb;
- enum pipe_format format;
- int samples;
- boolean sw;
-
- if (!stfb->iface)
- return FALSE;
-
- /* do not distinguish depth/stencil buffers */
- if (idx == BUFFER_STENCIL)
- idx = BUFFER_DEPTH;
-
- switch (idx) {
- case BUFFER_DEPTH:
- format = stfb->iface->visual->depth_stencil_format;
- sw = FALSE;
- break;
- case BUFFER_ACCUM:
- format = stfb->iface->visual->accum_format;
- sw = TRUE;
- break;
- default:
- format = stfb->iface->visual->color_format;
- sw = FALSE;
- break;
- }
-
- if (format == PIPE_FORMAT_NONE)
- return FALSE;
-
- samples = stfb->iface->visual->samples;
- if (!samples)
- samples = st_get_msaa();
-
- rb = st_new_renderbuffer_fb(format, samples, sw);
- if (!rb)
- return FALSE;
-
- if (idx != BUFFER_DEPTH) {
- _mesa_add_renderbuffer(&stfb->Base, idx, rb);
- }
- else {
- if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 0))
- _mesa_add_renderbuffer(&stfb->Base, BUFFER_DEPTH, rb);
- if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 1))
- _mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb);
- }
-
- return TRUE;
-}
-
-/**
- * Intialize a struct gl_config from a visual.
- */
-static void
-st_visual_to_context_mode(const struct st_visual *visual,
- struct gl_config *mode)
-{
- memset(mode, 0, sizeof(*mode));
-
- if (st_visual_have_buffers(visual, ST_ATTACHMENT_BACK_LEFT_MASK))
- mode->doubleBufferMode = GL_TRUE;
- if (st_visual_have_buffers(visual,
- ST_ATTACHMENT_FRONT_RIGHT_MASK | ST_ATTACHMENT_BACK_RIGHT_MASK))
- mode->stereoMode = GL_TRUE;
-
- if (visual->color_format != PIPE_FORMAT_NONE) {
- mode->rgbMode = GL_TRUE;
-
- mode->redBits =
- util_format_get_component_bits(visual->color_format,
- UTIL_FORMAT_COLORSPACE_RGB, 0);
- mode->greenBits =
- util_format_get_component_bits(visual->color_format,
- UTIL_FORMAT_COLORSPACE_RGB, 1);
- mode->blueBits =
- util_format_get_component_bits(visual->color_format,
- UTIL_FORMAT_COLORSPACE_RGB, 2);
- mode->alphaBits =
- util_format_get_component_bits(visual->color_format,
- UTIL_FORMAT_COLORSPACE_RGB, 3);
-
- mode->rgbBits = mode->redBits +
- mode->greenBits + mode->blueBits + mode->alphaBits;
- }
-
- if (visual->depth_stencil_format != PIPE_FORMAT_NONE) {
- mode->depthBits =
- util_format_get_component_bits(visual->depth_stencil_format,
- UTIL_FORMAT_COLORSPACE_ZS, 0);
- mode->stencilBits =
- util_format_get_component_bits(visual->depth_stencil_format,
- UTIL_FORMAT_COLORSPACE_ZS, 1);
-
- mode->haveDepthBuffer = mode->depthBits > 0;
- mode->haveStencilBuffer = mode->stencilBits > 0;
- }
-
- if (visual->accum_format != PIPE_FORMAT_NONE) {
- mode->haveAccumBuffer = GL_TRUE;
-
- mode->accumRedBits =
- util_format_get_component_bits(visual->accum_format,
- UTIL_FORMAT_COLORSPACE_RGB, 0);
- mode->accumGreenBits =
- util_format_get_component_bits(visual->accum_format,
- UTIL_FORMAT_COLORSPACE_RGB, 1);
- mode->accumBlueBits =
- util_format_get_component_bits(visual->accum_format,
- UTIL_FORMAT_COLORSPACE_RGB, 2);
- mode->accumAlphaBits =
- util_format_get_component_bits(visual->accum_format,
- UTIL_FORMAT_COLORSPACE_RGB, 3);
- }
-
- if (visual->samples) {
- mode->sampleBuffers = 1;
- mode->samples = visual->samples;
- }
-}
-
-/**
- * Determine the default draw or read buffer from a visual.
- */
-static void
-st_visual_to_default_buffer(const struct st_visual *visual,
- GLenum *buffer, GLint *index)
-{
- enum st_attachment_type statt;
- GLenum buf;
- gl_buffer_index idx;
-
- statt = visual->render_buffer;
- /* do nothing if an invalid render buffer is specified */
- if (statt == ST_ATTACHMENT_INVALID ||
- !st_visual_have_buffers(visual, 1 << statt))
- return;
-
- switch (statt) {
- case ST_ATTACHMENT_FRONT_LEFT:
- buf = GL_FRONT_LEFT;
- idx = BUFFER_FRONT_LEFT;
- break;
- case ST_ATTACHMENT_BACK_LEFT:
- buf = GL_BACK_LEFT;
- idx = BUFFER_BACK_LEFT;
- break;
- case ST_ATTACHMENT_FRONT_RIGHT:
- buf = GL_FRONT_RIGHT;
- idx = BUFFER_FRONT_RIGHT;
- break;
- case ST_ATTACHMENT_BACK_RIGHT:
- buf = GL_BACK_RIGHT;
- idx = BUFFER_BACK_RIGHT;
- break;
- default:
- buf = GL_NONE;
- idx = BUFFER_COUNT;
- break;
- }
-
- if (buf != GL_NONE) {
- if (buffer)
- *buffer = buf;
- if (index)
- *index = idx;
- }
-}
-
-/**
- * Create a framebuffer from a manager interface.
- */
-static struct st_framebuffer *
-st_framebuffer_create(struct st_framebuffer_iface *stfbi)
-{
- struct st_framebuffer *stfb;
- struct gl_config mode;
- gl_buffer_index idx;
-
- if (!stfbi)
- return NULL;
-
- stfb = CALLOC_STRUCT(st_framebuffer);
- if (!stfb)
- return NULL;
-
- st_visual_to_context_mode(stfbi->visual, &mode);
- _mesa_initialize_window_framebuffer(&stfb->Base, &mode);
-
- /* modify the draw/read buffers of the fb */
- st_visual_to_default_buffer(stfbi->visual, &stfb->Base.ColorDrawBuffer[0],
- &stfb->Base._ColorDrawBufferIndexes[0]);
- st_visual_to_default_buffer(stfbi->visual, &stfb->Base.ColorReadBuffer,
- &stfb->Base._ColorReadBufferIndex);
-
- stfb->iface = stfbi;
-
- /* add the color buffer */
- idx = stfb->Base._ColorDrawBufferIndexes[0];
- if (!st_framebuffer_add_renderbuffer(stfb, idx)) {
- FREE(stfb);
- return NULL;
- }
-
- st_framebuffer_add_renderbuffer(stfb, BUFFER_DEPTH);
- st_framebuffer_add_renderbuffer(stfb, BUFFER_ACCUM);
-
- st_framebuffer_update_attachments(stfb);
-
- stfb->Base.Initialized = GL_TRUE;
-
- return stfb;
-}
-
-/**
- * Reference a framebuffer.
- */
-static void
-st_framebuffer_reference(struct st_framebuffer **ptr,
- struct st_framebuffer *stfb)
-{
- struct gl_framebuffer *fb = &stfb->Base;
- _mesa_reference_framebuffer((struct gl_framebuffer **) ptr, fb);
-}
-
-static void
-st_context_notify_invalid_framebuffer(struct st_context_iface *stctxi,
- struct st_framebuffer_iface *stfbi)
-{
- struct st_context *st = (struct st_context *) stctxi;
- struct st_framebuffer *stfb;
-
- /* either draw or read winsys fb */
- stfb = st_ws_framebuffer(st->ctx->WinSysDrawBuffer);
- if (!stfb || stfb->iface != stfbi)
- stfb = st_ws_framebuffer(st->ctx->WinSysReadBuffer);
-
- if (stfb && stfb->iface == stfbi) {
- p_atomic_set(&stfb->revalidate, TRUE);
- }
- else {
- /* This function is probably getting called when we've detected a
- * change in a window's size but the currently bound context is
- * not bound to that window.
- * If the st_framebuffer_iface structure had a pointer to the
- * corresponding st_framebuffer we'd be able to handle this.
- */
- }
-}
-
-static void
-st_context_flush(struct st_context_iface *stctxi, unsigned flags,
- struct pipe_fence_handle **fence)
-{
- struct st_context *st = (struct st_context *) stctxi;
- st_flush(st, flags, fence);
- if (flags & PIPE_FLUSH_RENDER_CACHE)
- st_manager_flush_frontbuffer(st);
-}
-
-static boolean
-st_context_teximage(struct st_context_iface *stctxi,
- enum st_texture_type target,
- int level, enum pipe_format internal_format,
- struct pipe_resource *tex, boolean mipmap)
-{
- struct st_context *st = (struct st_context *) stctxi;
- struct gl_context *ctx = st->ctx;
- struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx);
- struct gl_texture_object *texObj;
- struct gl_texture_image *texImage;
- struct st_texture_object *stObj;
- struct st_texture_image *stImage;
- GLenum internalFormat;
- GLuint width, height, depth;
-
- switch (target) {
- case ST_TEXTURE_1D:
- target = GL_TEXTURE_1D;
- break;
- case ST_TEXTURE_2D:
- target = GL_TEXTURE_2D;
- break;
- case ST_TEXTURE_3D:
- target = GL_TEXTURE_3D;
- break;
- case ST_TEXTURE_RECT:
- target = GL_TEXTURE_RECTANGLE_ARB;
- break;
- default:
- return FALSE;
- break;
- }
-
- texObj = _mesa_select_tex_object(ctx, texUnit, target);
- _mesa_lock_texture(ctx, texObj);
-
- stObj = st_texture_object(texObj);
- /* switch to surface based */
- if (!stObj->surface_based) {
- _mesa_clear_texture_object(ctx, texObj);
- stObj->surface_based = GL_TRUE;
- }
-
- texImage = _mesa_get_tex_image(ctx, texObj, target, level);
- stImage = st_texture_image(texImage);
- if (tex) {
- gl_format texFormat;
-
- /*
- * XXX When internal_format and tex->format differ, st_finalize_texture
- * needs to allocate a new texture with internal_format and copy the
- * texture here into the new one. It will result in surface_copy being
- * called on surfaces whose formats differ.
- *
- * To avoid that, internal_format is (wrongly) ignored here. A sane fix
- * is to use a sampler view.
- */
- if (!st_sampler_compat_formats(tex->format, internal_format))
- internal_format = tex->format;
-
- if (util_format_get_component_bits(internal_format,
- UTIL_FORMAT_COLORSPACE_RGB, 3) > 0)
- internalFormat = GL_RGBA;
- else
- internalFormat = GL_RGB;
-
- texFormat = st_ChooseTextureFormat(ctx, internalFormat,
- GL_RGBA, GL_UNSIGNED_BYTE);
-
- _mesa_init_teximage_fields(ctx, target, texImage,
- tex->width0, tex->height0, 1, 0,
- internalFormat, texFormat);
-
- width = tex->width0;
- height = tex->height0;
- depth = tex->depth0;
-
- /* grow the image size until we hit level = 0 */
- while (level > 0) {
- if (width != 1)
- width <<= 1;
- if (height != 1)
- height <<= 1;
- if (depth != 1)
- depth <<= 1;
- level--;
- }
- }
- else {
- _mesa_clear_texture_image(ctx, texImage);
- width = height = depth = 0;
- }
-
- pipe_resource_reference(&stImage->pt, tex);
- stObj->width0 = width;
- stObj->height0 = height;
- stObj->depth0 = depth;
-
- _mesa_dirty_texobj(ctx, texObj, GL_TRUE);
- _mesa_unlock_texture(ctx, texObj);
-
- return TRUE;
-}
-
-static void
-st_context_copy(struct st_context_iface *stctxi,
- struct st_context_iface *stsrci, unsigned mask)
-{
- struct st_context *st = (struct st_context *) stctxi;
- struct st_context *src = (struct st_context *) stsrci;
-
- _mesa_copy_context(src->ctx, st->ctx, mask);
-}
-
-static boolean
-st_context_share(struct st_context_iface *stctxi,
- struct st_context_iface *stsrci)
-{
- struct st_context *st = (struct st_context *) stctxi;
- struct st_context *src = (struct st_context *) stsrci;
-
- return _mesa_share_state(st->ctx, src->ctx);
-}
-
-static void
-st_context_destroy(struct st_context_iface *stctxi)
-{
- struct st_context *st = (struct st_context *) stctxi;
- st_destroy_context(st);
-}
-
-static struct st_context_iface *
-st_api_create_context(struct st_api *stapi, struct st_manager *smapi,
- const struct st_context_attribs *attribs,
- struct st_context_iface *shared_stctxi)
-{
- struct st_context *shared_ctx = (struct st_context *) shared_stctxi;
- struct st_context *st;
- struct pipe_context *pipe;
- struct gl_config mode;
- gl_api api;
-
- if (!(stapi->profile_mask & (1 << attribs->profile)))
- return NULL;
-
- switch (attribs->profile) {
- case ST_PROFILE_DEFAULT:
- api = API_OPENGL;
- break;
- case ST_PROFILE_OPENGL_ES1:
- api = API_OPENGLES;
- break;
- case ST_PROFILE_OPENGL_ES2:
- api = API_OPENGLES2;
- break;
- case ST_PROFILE_OPENGL_CORE:
- default:
- return NULL;
- break;
- }
-
- pipe = smapi->screen->context_create(smapi->screen, NULL);
- if (!pipe)
- return NULL;
-
- st_visual_to_context_mode(&attribs->visual, &mode);
- st = st_create_context(api, pipe, &mode, shared_ctx);
- if (!st) {
- pipe->destroy(pipe);
- return NULL;
- }
-
- /* need to perform version check */
- if (attribs->major > 1 || attribs->minor > 0) {
- _mesa_compute_version(st->ctx);
-
- if (st->ctx->VersionMajor < attribs->major ||
- st->ctx->VersionMajor < attribs->minor) {
- st_destroy_context(st);
- return NULL;
- }
- }
-
- st->invalidate_on_gl_viewport =
- smapi->get_param(smapi, ST_MANAGER_BROKEN_INVALIDATE);
-
- st->iface.destroy = st_context_destroy;
- st->iface.notify_invalid_framebuffer =
- st_context_notify_invalid_framebuffer;
- st->iface.flush = st_context_flush;
- st->iface.teximage = st_context_teximage;
- st->iface.copy = st_context_copy;
- st->iface.share = st_context_share;
- st->iface.st_context_private = (void *) smapi;
-
- return &st->iface;
-}
-
-static boolean
-st_api_make_current(struct st_api *stapi, struct st_context_iface *stctxi,
- struct st_framebuffer_iface *stdrawi,
- struct st_framebuffer_iface *streadi)
-{
- struct st_context *st = (struct st_context *) stctxi;
- struct st_framebuffer *stdraw, *stread, *stfb;
- boolean ret;
-
- _glapi_check_multithread();
-
- if (st) {
- /* reuse/create the draw fb */
- stfb = st_ws_framebuffer(st->ctx->WinSysDrawBuffer);
- if (stfb && stfb->iface == stdrawi) {
- stdraw = NULL;
- st_framebuffer_reference(&stdraw, stfb);
- }
- else {
- stdraw = st_framebuffer_create(stdrawi);
- }
-
- /* reuse/create the read fb */
- stfb = st_ws_framebuffer(st->ctx->WinSysReadBuffer);
- if (!stfb || stfb->iface != streadi)
- stfb = stdraw;
- if (stfb && stfb->iface == streadi) {
- stread = NULL;
- st_framebuffer_reference(&stread, stfb);
- }
- else {
- stread = st_framebuffer_create(streadi);
- }
-
- if (stdraw && stread) {
- st_framebuffer_validate(stdraw, st);
- if (stread != stdraw)
- st_framebuffer_validate(stread, st);
-
- /* modify the draw/read buffers of the context */
- if (stdraw->iface) {
- st_visual_to_default_buffer(stdraw->iface->visual,
- &st->ctx->Color.DrawBuffer[0], NULL);
- }
- if (stread->iface) {
- st_visual_to_default_buffer(stread->iface->visual,
- &st->ctx->Pixel.ReadBuffer, NULL);
- }
-
- ret = _mesa_make_current(st->ctx, &stdraw->Base, &stread->Base);
- }
- else {
- struct gl_framebuffer *incomplete = _mesa_get_incomplete_framebuffer();
- ret = _mesa_make_current(st->ctx, incomplete, incomplete);
- }
-
- st_framebuffer_reference(&stdraw, NULL);
- st_framebuffer_reference(&stread, NULL);
- }
- else {
- ret = _mesa_make_current(NULL, NULL, NULL);
- }
-
- return ret;
-}
-
-static struct st_context_iface *
-st_api_get_current(struct st_api *stapi)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct st_context *st = (ctx) ? ctx->st : NULL;
-
- return (st) ? &st->iface : NULL;
-}
-
-static st_proc_t
-st_api_get_proc_address(struct st_api *stapi, const char *procname)
-{
- return (st_proc_t) _glapi_get_proc_address(procname);
-}
-
-static void
-st_api_destroy(struct st_api *stapi)
-{
-}
-
-/**
- * Flush the front buffer if the current context renders to the front buffer.
- */
-void
-st_manager_flush_frontbuffer(struct st_context *st)
-{
- struct st_framebuffer *stfb = st_ws_framebuffer(st->ctx->DrawBuffer);
- struct st_renderbuffer *strb = NULL;
-
- if (stfb)
- strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer);
- if (!strb)
- return;
-
- /* never a dummy fb */
- assert(stfb->iface);
- stfb->iface->flush_front(stfb->iface, ST_ATTACHMENT_FRONT_LEFT);
-}
-
-/**
- * Return the surface of an EGLImage.
- * FIXME: I think this should operate on resources, not surfaces
- */
-struct pipe_surface *
-st_manager_get_egl_image_surface(struct st_context *st,
- void *eglimg, unsigned usage)
-{
- struct st_manager *smapi =
- (struct st_manager *) st->iface.st_context_private;
- struct st_egl_image stimg;
- struct pipe_surface *ps, surf_tmpl;
-
- if (!smapi || !smapi->get_egl_image)
- return NULL;
-
- memset(&stimg, 0, sizeof(stimg));
- if (!smapi->get_egl_image(smapi, eglimg, &stimg))
- return NULL;
-
- memset(&surf_tmpl, 0, sizeof(surf_tmpl));
- surf_tmpl.format = stimg.texture->format;
- surf_tmpl.usage = usage;
- surf_tmpl.u.tex.level = stimg.level;
- surf_tmpl.u.tex.first_layer = stimg.layer;
- surf_tmpl.u.tex.last_layer = stimg.layer;
- ps = st->pipe->create_surface(st->pipe, stimg.texture, &surf_tmpl);
- pipe_resource_reference(&stimg.texture, NULL);
-
- return ps;
-}
-
-/**
- * Re-validate the framebuffers.
- */
-void
-st_manager_validate_framebuffers(struct st_context *st)
-{
- struct st_framebuffer *stdraw = st_ws_framebuffer(st->ctx->DrawBuffer);
- struct st_framebuffer *stread = st_ws_framebuffer(st->ctx->ReadBuffer);
-
- if (stdraw)
- st_framebuffer_validate(stdraw, st);
- if (stread && stread != stdraw)
- st_framebuffer_validate(stread, st);
-}
-
-/**
- * Add a color renderbuffer on demand.
- */
-boolean
-st_manager_add_color_renderbuffer(struct st_context *st,
- struct gl_framebuffer *fb,
- gl_buffer_index idx)
-{
- struct st_framebuffer *stfb = st_ws_framebuffer(fb);
-
- /* FBO */
- if (!stfb)
- return FALSE;
-
- if (stfb->Base.Attachment[idx].Renderbuffer)
- return TRUE;
-
- switch (idx) {
- case BUFFER_FRONT_LEFT:
- case BUFFER_BACK_LEFT:
- case BUFFER_FRONT_RIGHT:
- case BUFFER_BACK_RIGHT:
- break;
- default:
- return FALSE;
- break;
- }
-
- if (!st_framebuffer_add_renderbuffer(stfb, idx))
- return FALSE;
-
- st_framebuffer_update_attachments(stfb);
- st_invalidate_state(st->ctx, _NEW_BUFFERS);
-
- return TRUE;
-}
-
-static const struct st_api st_gl_api = {
- "Mesa " MESA_VERSION_STRING,
- ST_API_OPENGL,
-#if FEATURE_GL
- ST_PROFILE_DEFAULT_MASK |
-#endif
-#if FEATURE_ES1
- ST_PROFILE_OPENGL_ES1_MASK |
-#endif
-#if FEATURE_ES2
- ST_PROFILE_OPENGL_ES2_MASK |
-#endif
- 0,
- st_api_destroy,
- st_api_get_proc_address,
- st_api_create_context,
- st_api_make_current,
- st_api_get_current,
-};
-
-struct st_api *
-st_gl_api_create(void)
-{
- return (struct st_api *) &st_gl_api;
-}
+/* + * Mesa 3-D graphics library + * Version: 7.9 + * + * Copyright (C) 2010 LunarG Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Chia-I Wu <olv@lunarg.com> + */ + +#include "state_tracker/st_gl_api.h" + +#include "pipe/p_context.h" +#include "pipe/p_screen.h" +#include "util/u_format.h" +#include "util/u_pointer.h" +#include "util/u_inlines.h" +#include "util/u_atomic.h" +#include "util/u_surface.h" + +#include "main/mtypes.h" +#include "main/context.h" +#include "main/mfeatures.h" +#include "main/texobj.h" +#include "main/teximage.h" +#include "main/texstate.h" +#include "main/framebuffer.h" +#include "main/fbobject.h" +#include "main/renderbuffer.h" +#include "main/version.h" +#include "st_texture.h" + +#include "st_context.h" +#include "st_format.h" +#include "st_cb_fbo.h" +#include "st_cb_flush.h" +#include "st_manager.h" + +/** + * Cast wrapper to convert a struct gl_framebuffer to an st_framebuffer. + * Return NULL if the struct gl_framebuffer is a user-created framebuffer. + * We'll only return non-null for window system framebuffers. + * Note that this function may fail. + */ +static INLINE struct st_framebuffer * +st_ws_framebuffer(struct gl_framebuffer *fb) +{ + /* FBO cannot be casted. See st_new_framebuffer */ + return (struct st_framebuffer *) ((fb && !fb->Name) ? fb : NULL); +} + +/** + * Map an attachment to a buffer index. + */ +static INLINE gl_buffer_index +attachment_to_buffer_index(enum st_attachment_type statt) +{ + gl_buffer_index index; + + switch (statt) { + case ST_ATTACHMENT_FRONT_LEFT: + index = BUFFER_FRONT_LEFT; + break; + case ST_ATTACHMENT_BACK_LEFT: + index = BUFFER_BACK_LEFT; + break; + case ST_ATTACHMENT_FRONT_RIGHT: + index = BUFFER_FRONT_RIGHT; + break; + case ST_ATTACHMENT_BACK_RIGHT: + index = BUFFER_BACK_RIGHT; + break; + case ST_ATTACHMENT_DEPTH_STENCIL: + index = BUFFER_DEPTH; + break; + case ST_ATTACHMENT_ACCUM: + index = BUFFER_ACCUM; + break; + case ST_ATTACHMENT_SAMPLE: + default: + index = BUFFER_COUNT; + break; + } + + return index; +} + +/** + * Map a buffer index to an attachment. + */ +static INLINE enum st_attachment_type +buffer_index_to_attachment(gl_buffer_index index) +{ + enum st_attachment_type statt; + + switch (index) { + case BUFFER_FRONT_LEFT: + statt = ST_ATTACHMENT_FRONT_LEFT; + break; + case BUFFER_BACK_LEFT: + statt = ST_ATTACHMENT_BACK_LEFT; + break; + case BUFFER_FRONT_RIGHT: + statt = ST_ATTACHMENT_FRONT_RIGHT; + break; + case BUFFER_BACK_RIGHT: + statt = ST_ATTACHMENT_BACK_RIGHT; + break; + case BUFFER_DEPTH: + statt = ST_ATTACHMENT_DEPTH_STENCIL; + break; + case BUFFER_ACCUM: + statt = ST_ATTACHMENT_ACCUM; + break; + default: + statt = ST_ATTACHMENT_INVALID; + break; + } + + return statt; +} + +/** + * Validate a framebuffer to make sure up-to-date pipe_textures are used. + */ +static void +st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st) +{ + struct pipe_context *pipe = st->pipe; + struct pipe_resource *textures[ST_ATTACHMENT_COUNT]; + uint width, height; + unsigned i; + boolean changed = FALSE; + + if (!p_atomic_read(&stfb->revalidate)) + return; + + /* validate the fb */ + if (!stfb->iface->validate(stfb->iface, stfb->statts, stfb->num_statts, textures)) + return; + + width = stfb->Base.Width; + height = stfb->Base.Height; + + for (i = 0; i < stfb->num_statts; i++) { + struct st_renderbuffer *strb; + struct pipe_surface *ps, surf_tmpl; + gl_buffer_index idx; + + if (!textures[i]) + continue; + + idx = attachment_to_buffer_index(stfb->statts[i]); + if (idx >= BUFFER_COUNT) { + pipe_resource_reference(&textures[i], NULL); + continue; + } + + strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer); + assert(strb); + if (strb->texture == textures[i]) { + pipe_resource_reference(&textures[i], NULL); + continue; + } + + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + u_surface_default_template(&surf_tmpl, textures[i], + PIPE_BIND_RENDER_TARGET); + ps = pipe->create_surface(pipe, textures[i], &surf_tmpl); + if (ps) { + pipe_surface_reference(&strb->surface, ps); + pipe_resource_reference(&strb->texture, ps->texture); + /* ownership transfered */ + pipe_surface_reference(&ps, NULL); + + changed = TRUE; + + strb->Base.Width = strb->surface->width; + strb->Base.Height = strb->surface->height; + + width = strb->Base.Width; + height = strb->Base.Height; + } + + pipe_resource_reference(&textures[i], NULL); + } + + if (changed) { + st->dirty.st |= ST_NEW_FRAMEBUFFER; + _mesa_resize_framebuffer(st->ctx, &stfb->Base, width, height); + + assert(stfb->Base.Width == width); + assert(stfb->Base.Height == height); + } + + p_atomic_set(&stfb->revalidate, FALSE); +} + +/** + * Update the attachments to validate by looping the existing renderbuffers. + */ +static void +st_framebuffer_update_attachments(struct st_framebuffer *stfb) +{ + gl_buffer_index idx; + + stfb->num_statts = 0; + for (idx = 0; idx < BUFFER_COUNT; idx++) { + struct st_renderbuffer *strb; + enum st_attachment_type statt; + + strb = st_renderbuffer(stfb->Base.Attachment[idx].Renderbuffer); + if (!strb || strb->software) + continue; + + statt = buffer_index_to_attachment(idx); + if (statt != ST_ATTACHMENT_INVALID && + st_visual_have_buffers(stfb->iface->visual, 1 << statt)) + stfb->statts[stfb->num_statts++] = statt; + } + + p_atomic_set(&stfb->revalidate, TRUE); +} + +/** + * Add a renderbuffer to the framebuffer. + */ +static boolean +st_framebuffer_add_renderbuffer(struct st_framebuffer *stfb, + gl_buffer_index idx) +{ + struct gl_renderbuffer *rb; + enum pipe_format format; + int samples; + boolean sw; + + if (!stfb->iface) + return FALSE; + + /* do not distinguish depth/stencil buffers */ + if (idx == BUFFER_STENCIL) + idx = BUFFER_DEPTH; + + switch (idx) { + case BUFFER_DEPTH: + format = stfb->iface->visual->depth_stencil_format; + sw = FALSE; + break; + case BUFFER_ACCUM: + format = stfb->iface->visual->accum_format; + sw = TRUE; + break; + default: + format = stfb->iface->visual->color_format; + sw = FALSE; + break; + } + + if (format == PIPE_FORMAT_NONE) + return FALSE; + + samples = stfb->iface->visual->samples; + if (!samples) + samples = st_get_msaa(); + + rb = st_new_renderbuffer_fb(format, samples, sw); + if (!rb) + return FALSE; + + if (idx != BUFFER_DEPTH) { + _mesa_add_renderbuffer(&stfb->Base, idx, rb); + } + else { + if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 0)) + _mesa_add_renderbuffer(&stfb->Base, BUFFER_DEPTH, rb); + if (util_format_get_component_bits(format, UTIL_FORMAT_COLORSPACE_ZS, 1)) + _mesa_add_renderbuffer(&stfb->Base, BUFFER_STENCIL, rb); + } + + return TRUE; +} + +/** + * Intialize a struct gl_config from a visual. + */ +static void +st_visual_to_context_mode(const struct st_visual *visual, + struct gl_config *mode) +{ + memset(mode, 0, sizeof(*mode)); + + if (st_visual_have_buffers(visual, ST_ATTACHMENT_BACK_LEFT_MASK)) + mode->doubleBufferMode = GL_TRUE; + if (st_visual_have_buffers(visual, + ST_ATTACHMENT_FRONT_RIGHT_MASK | ST_ATTACHMENT_BACK_RIGHT_MASK)) + mode->stereoMode = GL_TRUE; + + if (visual->color_format != PIPE_FORMAT_NONE) { + mode->rgbMode = GL_TRUE; + + mode->redBits = + util_format_get_component_bits(visual->color_format, + UTIL_FORMAT_COLORSPACE_RGB, 0); + mode->greenBits = + util_format_get_component_bits(visual->color_format, + UTIL_FORMAT_COLORSPACE_RGB, 1); + mode->blueBits = + util_format_get_component_bits(visual->color_format, + UTIL_FORMAT_COLORSPACE_RGB, 2); + mode->alphaBits = + util_format_get_component_bits(visual->color_format, + UTIL_FORMAT_COLORSPACE_RGB, 3); + + mode->rgbBits = mode->redBits + + mode->greenBits + mode->blueBits + mode->alphaBits; + } + + if (visual->depth_stencil_format != PIPE_FORMAT_NONE) { + mode->depthBits = + util_format_get_component_bits(visual->depth_stencil_format, + UTIL_FORMAT_COLORSPACE_ZS, 0); + mode->stencilBits = + util_format_get_component_bits(visual->depth_stencil_format, + UTIL_FORMAT_COLORSPACE_ZS, 1); + + mode->haveDepthBuffer = mode->depthBits > 0; + mode->haveStencilBuffer = mode->stencilBits > 0; + } + + if (visual->accum_format != PIPE_FORMAT_NONE) { + mode->haveAccumBuffer = GL_TRUE; + + mode->accumRedBits = + util_format_get_component_bits(visual->accum_format, + UTIL_FORMAT_COLORSPACE_RGB, 0); + mode->accumGreenBits = + util_format_get_component_bits(visual->accum_format, + UTIL_FORMAT_COLORSPACE_RGB, 1); + mode->accumBlueBits = + util_format_get_component_bits(visual->accum_format, + UTIL_FORMAT_COLORSPACE_RGB, 2); + mode->accumAlphaBits = + util_format_get_component_bits(visual->accum_format, + UTIL_FORMAT_COLORSPACE_RGB, 3); + } + + if (visual->samples) { + mode->sampleBuffers = 1; + mode->samples = visual->samples; + } +} + +/** + * Determine the default draw or read buffer from a visual. + */ +static void +st_visual_to_default_buffer(const struct st_visual *visual, + GLenum *buffer, GLint *index) +{ + enum st_attachment_type statt; + GLenum buf; + gl_buffer_index idx; + + statt = visual->render_buffer; + /* do nothing if an invalid render buffer is specified */ + if (statt == ST_ATTACHMENT_INVALID || + !st_visual_have_buffers(visual, 1 << statt)) + return; + + switch (statt) { + case ST_ATTACHMENT_FRONT_LEFT: + buf = GL_FRONT_LEFT; + idx = BUFFER_FRONT_LEFT; + break; + case ST_ATTACHMENT_BACK_LEFT: + buf = GL_BACK_LEFT; + idx = BUFFER_BACK_LEFT; + break; + case ST_ATTACHMENT_FRONT_RIGHT: + buf = GL_FRONT_RIGHT; + idx = BUFFER_FRONT_RIGHT; + break; + case ST_ATTACHMENT_BACK_RIGHT: + buf = GL_BACK_RIGHT; + idx = BUFFER_BACK_RIGHT; + break; + default: + buf = GL_NONE; + idx = BUFFER_COUNT; + break; + } + + if (buf != GL_NONE) { + if (buffer) + *buffer = buf; + if (index) + *index = idx; + } +} + +/** + * Create a framebuffer from a manager interface. + */ +static struct st_framebuffer * +st_framebuffer_create(struct st_framebuffer_iface *stfbi) +{ + struct st_framebuffer *stfb; + struct gl_config mode; + gl_buffer_index idx; + + if (!stfbi) + return NULL; + + stfb = CALLOC_STRUCT(st_framebuffer); + if (!stfb) + return NULL; + + st_visual_to_context_mode(stfbi->visual, &mode); + _mesa_initialize_window_framebuffer(&stfb->Base, &mode); + + /* modify the draw/read buffers of the fb */ + st_visual_to_default_buffer(stfbi->visual, &stfb->Base.ColorDrawBuffer[0], + &stfb->Base._ColorDrawBufferIndexes[0]); + st_visual_to_default_buffer(stfbi->visual, &stfb->Base.ColorReadBuffer, + &stfb->Base._ColorReadBufferIndex); + + stfb->iface = stfbi; + + /* add the color buffer */ + idx = stfb->Base._ColorDrawBufferIndexes[0]; + if (!st_framebuffer_add_renderbuffer(stfb, idx)) { + FREE(stfb); + return NULL; + } + + st_framebuffer_add_renderbuffer(stfb, BUFFER_DEPTH); + st_framebuffer_add_renderbuffer(stfb, BUFFER_ACCUM); + + st_framebuffer_update_attachments(stfb); + + stfb->Base.Initialized = GL_TRUE; + + return stfb; +} + +/** + * Reference a framebuffer. + */ +static void +st_framebuffer_reference(struct st_framebuffer **ptr, + struct st_framebuffer *stfb) +{ + struct gl_framebuffer *fb = &stfb->Base; + _mesa_reference_framebuffer((struct gl_framebuffer **) ptr, fb); +} + +static void +st_context_notify_invalid_framebuffer(struct st_context_iface *stctxi, + struct st_framebuffer_iface *stfbi) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_framebuffer *stfb; + + /* either draw or read winsys fb */ + stfb = st_ws_framebuffer(st->ctx->WinSysDrawBuffer); + if (!stfb || stfb->iface != stfbi) + stfb = st_ws_framebuffer(st->ctx->WinSysReadBuffer); + + if (stfb && stfb->iface == stfbi) { + p_atomic_set(&stfb->revalidate, TRUE); + } + else { + /* This function is probably getting called when we've detected a + * change in a window's size but the currently bound context is + * not bound to that window. + * If the st_framebuffer_iface structure had a pointer to the + * corresponding st_framebuffer we'd be able to handle this. + */ + } +} + +static void +st_context_flush(struct st_context_iface *stctxi, unsigned flags, + struct pipe_fence_handle **fence) +{ + struct st_context *st = (struct st_context *) stctxi; + st_flush(st, flags, fence); + if (flags & PIPE_FLUSH_RENDER_CACHE) + st_manager_flush_frontbuffer(st); +} + +static boolean +st_context_teximage(struct st_context_iface *stctxi, + enum st_texture_type target, + int level, enum pipe_format internal_format, + struct pipe_resource *tex, boolean mipmap) +{ + struct st_context *st = (struct st_context *) stctxi; + struct gl_context *ctx = st->ctx; + struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); + struct gl_texture_object *texObj; + struct gl_texture_image *texImage; + struct st_texture_object *stObj; + struct st_texture_image *stImage; + GLenum internalFormat; + GLuint width, height, depth; + + switch (target) { + case ST_TEXTURE_1D: + target = GL_TEXTURE_1D; + break; + case ST_TEXTURE_2D: + target = GL_TEXTURE_2D; + break; + case ST_TEXTURE_3D: + target = GL_TEXTURE_3D; + break; + case ST_TEXTURE_RECT: + target = GL_TEXTURE_RECTANGLE_ARB; + break; + default: + return FALSE; + break; + } + + texObj = _mesa_select_tex_object(ctx, texUnit, target); + _mesa_lock_texture(ctx, texObj); + + stObj = st_texture_object(texObj); + /* switch to surface based */ + if (!stObj->surface_based) { + _mesa_clear_texture_object(ctx, texObj); + stObj->surface_based = GL_TRUE; + } + + texImage = _mesa_get_tex_image(ctx, texObj, target, level); + stImage = st_texture_image(texImage); + if (tex) { + gl_format texFormat; + + /* + * XXX When internal_format and tex->format differ, st_finalize_texture + * needs to allocate a new texture with internal_format and copy the + * texture here into the new one. It will result in surface_copy being + * called on surfaces whose formats differ. + * + * To avoid that, internal_format is (wrongly) ignored here. A sane fix + * is to use a sampler view. + */ + if (!st_sampler_compat_formats(tex->format, internal_format)) + internal_format = tex->format; + + if (util_format_get_component_bits(internal_format, + UTIL_FORMAT_COLORSPACE_RGB, 3) > 0) + internalFormat = GL_RGBA; + else + internalFormat = GL_RGB; + + texFormat = st_ChooseTextureFormat(ctx, internalFormat, + GL_RGBA, GL_UNSIGNED_BYTE); + + _mesa_init_teximage_fields(ctx, target, texImage, + tex->width0, tex->height0, 1, 0, + internalFormat, texFormat); + + width = tex->width0; + height = tex->height0; + depth = tex->depth0; + + /* grow the image size until we hit level = 0 */ + while (level > 0) { + if (width != 1) + width <<= 1; + if (height != 1) + height <<= 1; + if (depth != 1) + depth <<= 1; + level--; + } + } + else { + _mesa_clear_texture_image(ctx, texImage); + width = height = depth = 0; + } + + pipe_resource_reference(&stImage->pt, tex); + stObj->width0 = width; + stObj->height0 = height; + stObj->depth0 = depth; + + _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_unlock_texture(ctx, texObj); + + return TRUE; +} + +static void +st_context_copy(struct st_context_iface *stctxi, + struct st_context_iface *stsrci, unsigned mask) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + _mesa_copy_context(src->ctx, st->ctx, mask); +} + +static boolean +st_context_share(struct st_context_iface *stctxi, + struct st_context_iface *stsrci) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + return _mesa_share_state(st->ctx, src->ctx); +} + +static void +st_context_destroy(struct st_context_iface *stctxi) +{ + struct st_context *st = (struct st_context *) stctxi; + st_destroy_context(st); +} + +static struct st_context_iface * +st_api_create_context(struct st_api *stapi, struct st_manager *smapi, + const struct st_context_attribs *attribs, + struct st_context_iface *shared_stctxi) +{ + struct st_context *shared_ctx = (struct st_context *) shared_stctxi; + struct st_context *st; + struct pipe_context *pipe; + struct gl_config mode; + gl_api api; + + if (!(stapi->profile_mask & (1 << attribs->profile))) + return NULL; + + switch (attribs->profile) { + case ST_PROFILE_DEFAULT: + api = API_OPENGL; + break; + case ST_PROFILE_OPENGL_ES1: + api = API_OPENGLES; + break; + case ST_PROFILE_OPENGL_ES2: + api = API_OPENGLES2; + break; + case ST_PROFILE_OPENGL_CORE: + default: + return NULL; + break; + } + + pipe = smapi->screen->context_create(smapi->screen, NULL); + if (!pipe) + return NULL; + + st_visual_to_context_mode(&attribs->visual, &mode); + st = st_create_context(api, pipe, &mode, shared_ctx); + if (!st) { + pipe->destroy(pipe); + return NULL; + } + + /* need to perform version check */ + if (attribs->major > 1 || attribs->minor > 0) { + _mesa_compute_version(st->ctx); + + /* is the actual version less than the requested version? */ + if (st->ctx->VersionMajor * 10 + st->ctx->VersionMinor < + attribs->major * 10 + attribs->minor) { + st_destroy_context(st); + return NULL; + } + } + + st->invalidate_on_gl_viewport = + smapi->get_param(smapi, ST_MANAGER_BROKEN_INVALIDATE); + + st->iface.destroy = st_context_destroy; + st->iface.notify_invalid_framebuffer = + st_context_notify_invalid_framebuffer; + st->iface.flush = st_context_flush; + st->iface.teximage = st_context_teximage; + st->iface.copy = st_context_copy; + st->iface.share = st_context_share; + st->iface.st_context_private = (void *) smapi; + + return &st->iface; +} + +static boolean +st_api_make_current(struct st_api *stapi, struct st_context_iface *stctxi, + struct st_framebuffer_iface *stdrawi, + struct st_framebuffer_iface *streadi) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_framebuffer *stdraw, *stread, *stfb; + boolean ret; + + _glapi_check_multithread(); + + if (st) { + /* reuse/create the draw fb */ + stfb = st_ws_framebuffer(st->ctx->WinSysDrawBuffer); + if (stfb && stfb->iface == stdrawi) { + stdraw = NULL; + st_framebuffer_reference(&stdraw, stfb); + } + else { + stdraw = st_framebuffer_create(stdrawi); + } + + /* reuse/create the read fb */ + stfb = st_ws_framebuffer(st->ctx->WinSysReadBuffer); + if (!stfb || stfb->iface != streadi) + stfb = stdraw; + if (stfb && stfb->iface == streadi) { + stread = NULL; + st_framebuffer_reference(&stread, stfb); + } + else { + stread = st_framebuffer_create(streadi); + } + + if (stdraw && stread) { + st_framebuffer_validate(stdraw, st); + if (stread != stdraw) + st_framebuffer_validate(stread, st); + + /* modify the draw/read buffers of the context */ + if (stdraw->iface) { + st_visual_to_default_buffer(stdraw->iface->visual, + &st->ctx->Color.DrawBuffer[0], NULL); + } + if (stread->iface) { + st_visual_to_default_buffer(stread->iface->visual, + &st->ctx->Pixel.ReadBuffer, NULL); + } + + ret = _mesa_make_current(st->ctx, &stdraw->Base, &stread->Base); + } + else { + struct gl_framebuffer *incomplete = _mesa_get_incomplete_framebuffer(); + ret = _mesa_make_current(st->ctx, incomplete, incomplete); + } + + st_framebuffer_reference(&stdraw, NULL); + st_framebuffer_reference(&stread, NULL); + } + else { + ret = _mesa_make_current(NULL, NULL, NULL); + } + + return ret; +} + +static struct st_context_iface * +st_api_get_current(struct st_api *stapi) +{ + GET_CURRENT_CONTEXT(ctx); + struct st_context *st = (ctx) ? ctx->st : NULL; + + return (st) ? &st->iface : NULL; +} + +static st_proc_t +st_api_get_proc_address(struct st_api *stapi, const char *procname) +{ + return (st_proc_t) _glapi_get_proc_address(procname); +} + +static void +st_api_destroy(struct st_api *stapi) +{ +} + +/** + * Flush the front buffer if the current context renders to the front buffer. + */ +void +st_manager_flush_frontbuffer(struct st_context *st) +{ + struct st_framebuffer *stfb = st_ws_framebuffer(st->ctx->DrawBuffer); + struct st_renderbuffer *strb = NULL; + + if (stfb) + strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT].Renderbuffer); + if (!strb) + return; + + /* never a dummy fb */ + assert(stfb->iface); + stfb->iface->flush_front(stfb->iface, ST_ATTACHMENT_FRONT_LEFT); +} + +/** + * Return the surface of an EGLImage. + * FIXME: I think this should operate on resources, not surfaces + */ +struct pipe_surface * +st_manager_get_egl_image_surface(struct st_context *st, + void *eglimg, unsigned usage) +{ + struct st_manager *smapi = + (struct st_manager *) st->iface.st_context_private; + struct st_egl_image stimg; + struct pipe_surface *ps, surf_tmpl; + + if (!smapi || !smapi->get_egl_image) + return NULL; + + memset(&stimg, 0, sizeof(stimg)); + if (!smapi->get_egl_image(smapi, eglimg, &stimg)) + return NULL; + + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = stimg.texture->format; + surf_tmpl.usage = usage; + surf_tmpl.u.tex.level = stimg.level; + surf_tmpl.u.tex.first_layer = stimg.layer; + surf_tmpl.u.tex.last_layer = stimg.layer; + ps = st->pipe->create_surface(st->pipe, stimg.texture, &surf_tmpl); + pipe_resource_reference(&stimg.texture, NULL); + + return ps; +} + +/** + * Re-validate the framebuffers. + */ +void +st_manager_validate_framebuffers(struct st_context *st) +{ + struct st_framebuffer *stdraw = st_ws_framebuffer(st->ctx->DrawBuffer); + struct st_framebuffer *stread = st_ws_framebuffer(st->ctx->ReadBuffer); + + if (stdraw) + st_framebuffer_validate(stdraw, st); + if (stread && stread != stdraw) + st_framebuffer_validate(stread, st); +} + +/** + * Add a color renderbuffer on demand. + */ +boolean +st_manager_add_color_renderbuffer(struct st_context *st, + struct gl_framebuffer *fb, + gl_buffer_index idx) +{ + struct st_framebuffer *stfb = st_ws_framebuffer(fb); + + /* FBO */ + if (!stfb) + return FALSE; + + if (stfb->Base.Attachment[idx].Renderbuffer) + return TRUE; + + switch (idx) { + case BUFFER_FRONT_LEFT: + case BUFFER_BACK_LEFT: + case BUFFER_FRONT_RIGHT: + case BUFFER_BACK_RIGHT: + break; + default: + return FALSE; + break; + } + + if (!st_framebuffer_add_renderbuffer(stfb, idx)) + return FALSE; + + st_framebuffer_update_attachments(stfb); + st_invalidate_state(st->ctx, _NEW_BUFFERS); + + return TRUE; +} + +static const struct st_api st_gl_api = { + "Mesa " MESA_VERSION_STRING, + ST_API_OPENGL, +#if FEATURE_GL + ST_PROFILE_DEFAULT_MASK | +#endif +#if FEATURE_ES1 + ST_PROFILE_OPENGL_ES1_MASK | +#endif +#if FEATURE_ES2 + ST_PROFILE_OPENGL_ES2_MASK | +#endif + 0, + st_api_destroy, + st_api_get_proc_address, + st_api_create_context, + st_api_make_current, + st_api_get_current, +}; + +struct st_api * +st_gl_api_create(void) +{ + return (struct st_api *) &st_gl_api; +} diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index 1f4e66896..00c315e21 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -1,6195 +1,6202 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
-<xkbConfigRegistry version="1.1">
- <modelList>
- <model>
- <configItem>
- <name>pc101</name>
- <_description>Generic 101-key PC</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc102</name>
- <_description>Generic 102-key (Intl) PC</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc104</name>
- <_description>Generic 104-key PC</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc105</name>
- <_description>Generic 105-key (Intl) PC</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell101</name>
- <_description>Dell 101-key PC</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>latitude</name>
- <_description>Dell Latitude series laptop</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellm65</name>
- <_description>Dell Precision M65</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>everex</name>
- <_description>Everex STEPnote</_description>
- <vendor>Everex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>flexpro</name>
- <_description>Keytronic FlexPro</_description>
- <vendor>Keytronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft</name>
- <_description>Microsoft Natural</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>omnikey101</name>
- <_description>Northgate OmniKey 101</_description>
- <vendor>Northgate</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>winbook</name>
- <_description>Winbook Model XP5</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>pc98</name>
- <_description>PC-98xx Series</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKB21</name>
- <_description>A4Tech KB-21</_description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4techKBS8</name>
- <_description>A4Tech KBS-8</_description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>a4_rfkb23</name>
- <_description>A4Tech Wireless Desktop RFKB-23</_description>
- <vendor>A4Tech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>airkey</name>
- <_description>Acer AirKey V</_description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>azonaRF2300</name>
- <_description>Azona RF2300 wireless Internet Keyboard</_description>
- <vendor>Azona</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>scorpius</name>
- <_description>Advance Scorpius KI</_description>
- <vendor>Scorpius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>brother</name>
- <_description>Brother Internet Keyboard</_description>
- <vendor>Brother</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5113rf</name>
- <_description>BTC 5113RF Multimedia</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5126t</name>
- <_description>BTC 5126T</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc6301urf</name>
- <_description>BTC 6301URF</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000</name>
- <_description>BTC 9000</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9000a</name>
- <_description>BTC 9000A</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9001ah</name>
- <_description>BTC 9001AH</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc5090</name>
- <_description>BTC 5090</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9019u</name>
- <_description>BTC 9019U</_description>
- <vendor>BTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>btc9116u</name>
- <_description>BTC 9116U Mini Wireless Internet and Gaming</_description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblue</name>
- <_description>Cherry Blue Line CyBo@rd</_description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherryblueb</name>
- <_description>Cherry CyMotion Master XPress</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybluea</name>
- <_description>Cherry Blue Line CyBo@rd (alternate option)</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycyboard</name>
- <_description>Cherry CyBo@rd USB-Hub</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrycmexpert</name>
- <_description>Cherry CyMotion Expert</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cherrybunlim</name>
- <_description>Cherry B.UNLIMITED</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony</name>
- <_description>Chicony Internet Keyboard</_description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0108</name>
- <_description>Chicony KU-0108</_description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony0420</name>
- <_description>Chicony KU-0420</_description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>chicony9885</name>
- <_description>Chicony KB-9885</_description>
- <vendor>Chicony</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqeak8</name>
- <_description>Compaq Easy Access Keyboard</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik7</name>
- <_description>Compaq Internet Keyboard (7 keys)</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik13</name>
- <_description>Compaq Internet Keyboard (13 keys)</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compaqik18</name>
- <_description>Compaq Internet Keyboard (18 keys)</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>cymotionlinux</name>
- <_description>Cherry CyMotion Master Linux</_description>
- <vendor>Cherry</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>armada</name>
- <_description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>presario</name>
- <_description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ipaq</name>
- <_description>Compaq iPaq Keyboard</_description>
- <vendor>Compaq</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dell</name>
- <_description>Dell</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8125</name>
- <_description>Dell SK-8125</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellsk8135</name>
- <_description>Dell SK-8135</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dellusbmm</name>
- <_description>Dell USB Multimedia Keyboard</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>inspiron</name>
- <_description>Dell Laptop/notebook Inspiron 6xxx/8xxx</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>precision_m</name>
- <_description>Dell Laptop/notebook Precision M series</_description>
- <vendor>Dell</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dexxa</name>
- <_description>Dexxa Wireless Desktop Keyboard</_description>
- <vendor>Dexxa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>diamond</name>
- <_description>Diamond 9801 / 9802 series</_description>
- <vendor>Diamond</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>dtk2000</name>
- <_description>DTK2000</_description>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ennyah_dkb1008</name>
- <_description>Ennyah DKB-1008</_description>
- <vendor>Ennyah</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>fscaa1667g</name>
- <_description>Fujitsu-Siemens Computers AMILO laptop</_description>
- <vendor>Fujitsu-Siemens</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>genius</name>
- <_description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</_description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy</name>
- <_description>Genius Comfy KB-12e</_description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuscomfy2</name>
- <_description>Genius Comfy KB-21e-Scroll</_description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskb19e</name>
- <_description>Genius KB-19e NB</_description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>geniuskkb2050hs</name>
- <_description>Genius KKB-2050HS</_description>
- <vendor>Genius</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>gyration</name>
- <_description>Gyration</_description>
- <vendor>Gyration</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
- <_description>HTC Dream</_description>
- <vendor>HTC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>kinesis</name>
- <_description>Kinesis</_description>
- <vendor>Kinesis</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_base</name>
- <_description>Logitech Generic Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logitech_g15</name>
- <_description>Logitech G15 extra keys via G15daemon</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpi6</name>
- <_description>Hewlett-Packard Internet Keyboard</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp250x</name>
- <_description>Hewlett-Packard SK-250x Multimedia Keyboard</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gc</name>
- <_description>Hewlett-Packard Omnibook XE3 GC</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxe3gf</name>
- <_description>Hewlett-Packard Omnibook XE3 GF</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpxt1000</name>
- <_description>Hewlett-Packard Omnibook XT1000</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpdv5</name>
- <_description>Hewlett-Packard Pavilion dv5</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpzt11xx</name>
- <_description>Hewlett-Packard Pavilion ZT11xx</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp500fa</name>
- <_description>Hewlett-Packard Omnibook 500 FA</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp5xx</name>
- <_description>Hewlett-Packard Omnibook 5xx</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpnx9020</name>
- <_description>Hewlett-Packard nx9020</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hp6000</name>
- <_description>Hewlett-Packard Omnibook 6000/6100</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>honeywell_euroboard</name>
- <_description>Honeywell Euroboard</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hpmini110</name>
- <_description>Hewlett-Packard Mini 110 Notebook</_description>
- <vendor>Hewlett-Packard</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess</name>
- <_description>IBM Rapid Access</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>rapidaccess2</name>
- <_description>IBM Rapid Access II</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad</name>
- <_description>IBM ThinkPad 560Z/600/600E/A22E</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpad60</name>
- <_description>IBM ThinkPad R60/T60/R61/T61</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>thinkpadz60</name>
- <_description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>ibm_spacesaver</name>
- <_description>IBM Space Saver</_description>
- <vendor>Lenovo (previously IBM)</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiaccess</name>
- <_description>Logitech Access Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiclx300</name>
- <_description>Logitech Cordless Desktop LX-300</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logii350</name>
- <_description>Logitech Internet 350 Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logimel</name>
- <_description>Logitech Media Elite Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd</name>
- <_description>Logitech Cordless Desktop</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_it</name>
- <_description>Logitech Cordless Desktop iTouch</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_nav</name>
- <_description>Logitech Cordless Desktop Navigator</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicd_opt</name>
- <_description>Logitech Cordless Desktop Optical</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicda</name>
- <_description>Logitech Cordless Desktop (alternate option)</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdpa2</name>
- <_description>Logitech Cordless Desktop Pro (alternate option 2)</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicfn</name>
- <_description>Logitech Cordless Freedom/Desktop Navigator</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicdn</name>
- <_description>Logitech Cordless Desktop Navigator</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiitc</name>
- <_description>Logitech iTouch Cordless Keyboard (model Y-RB6)</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiik</name>
- <_description>Logitech Internet Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>itouch</name>
- <_description>Logitech iTouch</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logicink</name>
- <_description>Logitech Internet Navigator Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiex110</name>
- <_description>Logitech Cordless Desktop EX110</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkse</name>
- <_description>Logitech iTouch Internet Navigator Keyboard SE</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiinkseusb</name>
- <_description>Logitech iTouch Internet Navigator Keyboard SE (USB)</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultrax</name>
- <_description>Logitech Ultra-X Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logiultraxc</name>
- <_description>Logitech Ultra-X Cordless Media Desktop Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovo</name>
- <_description>Logitech diNovo Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>logidinovoedge</name>
- <_description>Logitech diNovo Edge Keyboard</_description>
- <vendor>Logitech</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx1998</name>
- <_description>Memorex MX1998</_description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2500</name>
- <_description>Memorex MX2500 EZ-Access Keyboard</_description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>mx2750</name>
- <_description>Memorex MX2750</_description>
- <vendor>Memorex</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoft7000</name>
- <_description>Microsoft Natural Wireless Ergonomic Keyboard 7000</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftinet</name>
- <_description>Microsoft Internet Keyboard</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftpro</name>
- <_description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprousb</name>
- <_description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprooem</name>
- <_description>Microsoft Natural Keyboard Pro OEM</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>vsonku306</name>
- <_description>ViewSonic KU-306 Internet Keyboard</_description>
- <vendor>ViewSonic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftprose</name>
- <_description>Microsoft Internet Keyboard Pro, Swedish</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftoffice</name>
- <_description>Microsoft Office Keyboard</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftmult</name>
- <_description>Microsoft Wireless Multimedia Keyboard 1.0A</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftelite</name>
- <_description>Microsoft Natural Keyboard Elite</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>microsoftccurve2k</name>
- <_description>Microsoft Comfort Curve Keyboard 2000</_description>
- <vendor>Microsoft Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>oretec</name>
- <_description>Ortek MCK-800 MM/Internet keyboard</_description>
- <vendor>Ortek</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>propeller</name>
- <_description>Propeller Voyager (KTEZ-1000)</_description>
- <vendor>KeyTronic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>qtronix</name>
- <_description>QTronix Scorpius 98N+</_description>
- <vendor>QTronix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4500</name>
- <_description>Samsung SDM 4500P</_description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>samsung4510</name>
- <_description>Samsung SDM 4510P</_description>
- <vendor>Samsung</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sanwaskbkg3</name>
- <_description>Sanwa Supply SKB-KG3</_description>
- <vendor>Sanwa Supply Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk1300</name>
- <_description>SK-1300</_description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk2500</name>
- <_description>SK-2500</_description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk6200</name>
- <_description>SK-6200</_description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sk7100</name>
- <_description>SK-7100</_description>
- <vendor>NEC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sp_inet</name>
- <_description>Super Power Multimedia Keyboard</_description>
- <vendor>Generic</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven</name>
- <_description>SVEN Ergonomic 2500</_description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sven303</name>
- <_description>SVEN Slim 303</_description>
- <vendor>SVEN</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>symplon</name>
- <_description>Symplon PaceBook (tablet PC)</_description>
- <vendor>Symplon</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>toshiba_s3000</name>
- <_description>Toshiba Satellite S3000</_description>
- <vendor>Toshiba</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust</name>
- <_description>Trust Wireless Keyboard Classic</_description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trustda</name>
- <_description>Trust Direct Access Keyboard</_description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>trust_slimline</name>
- <_description>Trust Slimline</_description>
- <vendor>Trust</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2020</name>
- <_description>TypeMatrix EZ-Reach 2020</_description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030PS2</name>
- <_description>TypeMatrix EZ-Reach 2030 PS2</_description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB</name>
- <_description>TypeMatrix EZ-Reach 2030 USB</_description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-102</name>
- <_description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</_description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>tm2030USB-106</name>
- <_description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</_description>
- <vendor>TypeMatrix</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>yahoo</name>
- <_description>Yahoo! Internet Keyboard</_description>
- <vendor>Yahoo!</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook78</name>
- <_description>MacBook/MacBook Pro</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macbook79</name>
- <_description>MacBook/MacBook Pro (Intl)</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh</name>
- <_description>Macintosh</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_old</name>
- <_description>Macintosh Old</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>macintosh_hhk</name>
- <_description>Happy Hacking Keyboard for Mac</_description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_c300</name>
- <_description>Acer C300</_description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_ferrari4k</name>
- <_description>Acer Ferrari 4000</_description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>acer_laptop</name>
- <_description>Acer Laptop</_description>
- <vendor>Acer</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>asus_laptop</name>
- <_description>Asus Laptop</_description>
- <vendor>Asus</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple</name>
- <_description>Apple</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>apple_laptop</name>
- <_description>Apple Laptop</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_ansi</name>
- <_description>Apple Aluminium Keyboard (ANSI)</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_iso</name>
- <_description>Apple Aluminium Keyboard (ISO)</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>applealu_jis</name>
- <_description>Apple Aluminium Keyboard (JIS)</_description>
- <vendor>Apple</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>silvercrest</name>
- <_description>SILVERCREST Multimedia Wireless Keyboard</_description>
- <vendor>Silvercrest</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>emachines</name>
- <_description>Laptop/notebook eMachines m68xx</_description>
- <vendor>eMachines</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx</name>
- <_description>BenQ X-Touch</_description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx730</name>
- <_description>BenQ X-Touch 730</_description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>benqx800</name>
- <_description>BenQ X-Touch 800</_description>
- <vendor>BenQ</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>hhk</name>
- <_description>Happy Hacking Keyboard</_description>
- <vendor>Fujitsu</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>classmate</name>
- <_description>Classmate PC</_description>
- <vendor>Intel</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>olpc</name>
- <_description>OLPC</_description>
- <vendor>OLPC</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>sun6</name>
- <_description>Sun Type 5/6</_description>
- <vendor>Sun Microsystems</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>targa_v811</name>
- <_description>Targa Visionary 811</_description>
- <vendor>Targa</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>unitekkb1925</name>
- <_description>Unitek KB-1925</_description>
- <vendor>Unitek Group</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>compalfl90</name>
- <_description>FL90</_description>
- <vendor>Compal Electronics Inc.</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>creativedw7000</name>
- <_description>Creative Desktop Wireless 7000</_description>
- <vendor>Creative</vendor>
- </configItem>
- </model>
- <model>
- <configItem>
- <name>htcdream</name>
- <_description>Htc Dream phone</_description>
- <vendor>htc</vendor>
- </configItem>
- </model>
- </modelList>
- <layoutList>
- <layout>
- <configItem>
- <name>us</name>
- <_shortDescription>USA</_shortDescription>
- <_description>USA</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>chr</name>
- <_description>USA - Cherokee</_description>
- <languageList>
- <iso639Id>chr</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>euro</name>
- <_description>USA - With EuroSign on 5</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
- <_description>USA - International (with dead keys)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt-intl</name>
- <_description>USA - Alternative international</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
- <_description>USA - Colemak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>USA - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-intl</name>
- <_description>USA - Dvorak international (with dead keys)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-alt-intl</name>
- <_description>USA - Dvorak alternative international (no dead keys)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-l</name>
- <_description>USA - Left handed Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-r</name>
- <_description>USA - Right handed Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-classic</name>
- <_description>USA - Classic Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvp</name>
- <_description>USA - Programmer Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
- <_description>USA - Russian phonetic</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>USA - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>altgr-intl</name>
- <_description>USA - International (AltGr dead keys)</_description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>fra</iso639Id>
- <iso639Id>ger</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>olpc2</name>
- <_description>USA - Layout toggle on multiply/divide key</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hbs</name>
- <_description>USA - Serbo-Croatian</_description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bos</iso639Id>
- <iso639Id>hbs</iso639Id>
- <iso639Id>hrv</iso639Id>
- <iso639Id>srp</iso639Id> </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ad</name>
- <_shortDescription>And</_shortDescription>
- <_description>Andorra</_description>
- <languageList>
- <iso639Id>cat</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>af</name>
- <_shortDescription>Afg</_shortDescription>
- <_description>Afghanistan</_description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ps</name>
- <_description>Afghanistan - Pashto</_description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>uz</name>
- <_description>Afghanistan - Southern Uzbek</_description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>olpc-ps</name>
- <_description>Afghanistan - OLPC Pashto</_description>
- <languageList>
- <iso639Id>pus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fa-olpc</name>
- <_description>Afghanistan - OLPC Dari</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>uz-olpc</name>
- <_description>Afghanistan - OLPC Southern Uzbek</_description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ara</name>
- <_shortDescription>Ara</_shortDescription>
- <_description>Arabic</_description>
- <countryList>
- <iso3166Id>AE</iso3166Id>
- <iso3166Id>BH</iso3166Id>
- <iso3166Id>DZ</iso3166Id>
- <iso3166Id>EG</iso3166Id>
- <iso3166Id>EH</iso3166Id>
- <iso3166Id>JO</iso3166Id>
- <iso3166Id>KW</iso3166Id>
- <iso3166Id>LB</iso3166Id>
- <iso3166Id>LY</iso3166Id>
- <iso3166Id>MA</iso3166Id>
- <iso3166Id>MR</iso3166Id>
- <iso3166Id>OM</iso3166Id>
- <iso3166Id>PS</iso3166Id>
- <iso3166Id>QA</iso3166Id>
- <iso3166Id>SA</iso3166Id>
- <iso3166Id>SD</iso3166Id>
- <iso3166Id>SY</iso3166Id>
- <iso3166Id>TN</iso3166Id>
- <iso3166Id>YE</iso3166Id>
- </countryList>
- <languageList>
- <iso639Id>ara</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>azerty</name>
- <_description>Arabic - azerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>azerty_digits</name>
- <_description>Arabic - azerty/digits</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>digits</name>
- <_description>Arabic - digits</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
- <_description>Arabic - qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_digits</name>
- <_description>Arabic - qwerty/digits</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>buckwalter</name>
- <_description>Arabic - Buckwalter</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>al</name>
- <_shortDescription>Alb</_shortDescription>
- <_description>Albania</_description>
- <languageList>
- <iso639Id>alb</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>am</name>
- <_shortDescription>Arm</_shortDescription>
- <_description>Armenia</_description>
- <languageList>
- <iso639Id>hye</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Armenia - Phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic-alt</name>
- <_description>Armenia - Alternative Phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern</name>
- <_description>Armenia - Eastern</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>western</name>
- <_description>Armenia - Western</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eastern-alt</name>
- <_description>Armenia - Alternative Eastern</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>at</name>
- <_shortDescription>Aut</_shortDescription>
- <_description>Austria</_description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Austria - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Austria - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Austria - Macintosh</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>az</name>
- <_shortDescription>Aze</_shortDescription>
- <_description>Azerbaijan</_description>
- <languageList>
- <iso639Id>aze</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>cyrillic</name>
- <_description>Azerbaijan - Cyrillic</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>by</name>
- <_shortDescription>Blr</_shortDescription>
- <_description>Belarus</_description>
- <languageList>
- <iso639Id>bel</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Belarus - Legacy</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
- <_description>Belarus - Latin</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>be</name>
- <_shortDescription>Bel</_shortDescription>
- <_description>Belgium</_description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>nld</iso639Id>
- <iso639Id>fra</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>oss</name>
- <_description>Belgium - Alternative</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
- <_description>Belgium - Alternative, latin-9 only</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
- <_description>Belgium - Alternative, Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>iso-alternate</name>
- <_description>Belgium - ISO Alternate</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Belgium - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Belgium - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>wang</name>
- <_description>Belgium - Wang model 724 azerty</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>bd</name>
- <_shortDescription>Bgd</_shortDescription>
- <_description>Bangladesh</_description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>probhat</name>
- <_description>Bangladesh - Probhat</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>in</name>
- <_shortDescription>Ind</_shortDescription>
- <_description>India</_description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ben</name>
- <_description>India - Bengali</_description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ben_probhat</name>
- <_description>India - Bengali Probhat</_description>
- <languageList>
- <iso639Id>ben</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>guj</name>
- <_description>India - Gujarati</_description>
- <languageList>
- <iso639Id>guj</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>guru</name>
- <_description>India - Gurmukhi</_description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>jhelum</name>
- <_description>India - Gurmukhi Jhelum</_description>
- <languageList>
- <iso639Id>pan</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kan</name>
- <_description>India - Kannada</_description>
- <languageList>
- <iso639Id>kan</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mal</name>
- <_description>India - Malayalam</_description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mal_lalitha</name>
- <_description>India - Malayalam Lalitha</_description>
- <languageList>
- <iso639Id>mal</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ori</name>
- <_description>India - Oriya</_description>
- <languageList>
- <iso639Id>ori</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam_unicode</name>
- <_description>India - Tamil Unicode</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam_keyboard_with_numerals</name>
- <_description>India - Tamil Keyboard with Numerals</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam_TAB</name>
- <_description>India - Tamil TAB Typewriter</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam_TSCII</name>
- <_description>India - Tamil TSCII Typewriter</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam</name>
- <_description>India - Tamil</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tel</name>
- <_description>India - Telugu</_description>
- <languageList>
- <iso639Id>tel</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-phonetic</name>
- <_description>India - Urdu, Phonetic</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-phonetic3</name>
- <_description>India - Urdu, Alternative phonetic</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-winkeys</name>
- <_description>India - Urdu, Winkeys</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bolnagri</name>
- <_description>India - Hindi Bolnagri</_description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hin-wx</name>
- <_description>India - Hindi Wx</_description>
- <languageList>
- <iso639Id>hin</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eng</name>
- <_description>India - English with RupeeSign</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ba</name>
- <_shortDescription>Bih</_shortDescription>
- <_description>Bosnia and Herzegovina</_description>
- <languageList>
- <iso639Id>bos</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>alternatequotes</name>
- <_description>Bosnia and Herzegovina - Use guillemets for quotes</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
- <_description>Bosnia and Herzegovina - Use Bosnian digraphs</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
- <_description>Bosnia and Herzegovina - US keyboard with Bosnian digraphs</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Bosnia and Herzegovina - US keyboard with Bosnian letters</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>br</name>
- <_shortDescription>Bra</_shortDescription>
- <_description>Brazil</_description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Brazil - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Brazil - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
- <_description>Brazil - Nativo</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
- <_description>Brazil - Nativo for USA keyboards</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
- <_description>Brazil - Nativo for Esperanto</_description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>bg</name>
- <_shortDescription>Bgr</_shortDescription>
- <_description>Bulgaria</_description>
- <languageList>
- <iso639Id>bul</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Bulgaria - Traditional phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bas_phonetic</name>
- <_description>Bulgaria - New phonetic</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ma</name>
- <_description>Morocco</_description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>french</name>
- <_description>Morocco - French</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh</name>
- <_description>Morocco - Tifinagh</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh-alt</name>
- <_description>Morocco - Tifinagh alternative</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh-alt-phonetic</name>
- <_description>Morocco - Tifinagh alternative phonetic</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh-extended</name>
- <_description>Morocco - Tifinagh extended</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh-phonetic</name>
- <_description>Morocco - Tifinagh phonetic</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tifinagh-extended-phonetic</name>
- <_description>Morocco - Tifinagh extended phonetic</_description>
- <languageList>
- <iso639Id>ber</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mm</name>
- <_shortDescription>Mmr</_shortDescription>
- <_description>Myanmar</_description>
- <languageList>
- <iso639Id>mya</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>ca</name>
- <_shortDescription>Can</_shortDescription>
- <_description>Canada</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>fr-dvorak</name>
- <_description>Canada - French Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr-legacy</name>
- <_description>Canada - French (legacy)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multix</name>
- <_description>Canada - Multilingual</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi</name>
- <_description>Canada - Multilingual, first part</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>multi-2gr</name>
- <_description>Canada - Multilingual, second part</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ike</name>
- <_description>Canada - Inuktitut</_description>
- <languageList>
- <iso639Id>iku</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>shs</name>
- <_description>Canada - Secwepemctsin</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kut</name>
- <_description>Canada - Ktunaxa</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>eng</name>
- <_description>Canada - English</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>cd</name>
- <_shortDescription>COD</_shortDescription>
- <_description>Congo, Democratic Republic of the</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>cn</name>
- <_shortDescription>Chn</_shortDescription>
- <_description>China</_description>
- <languageList>
- <iso639Id>chi</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>tib</name>
- <_description>China - Tibetan</_description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tib_asciinum</name>
- <_description>China - Tibetan (with ASCII numerals)</_description>
- <languageList>
- <iso639Id>tib</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>uig</name>
- <_description>China - Uyghur</_description>
- <languageList>
- <iso639Id>uig</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>hr</name>
- <_shortDescription>Hrv</_shortDescription>
- <_description>Croatia</_description>
- <languageList>
- <iso639Id>scr</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>alternatequotes</name>
- <_description>Croatia - Use guillemets for quotes</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicode</name>
- <_description>Croatia - Use Croatian digraphs</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>unicodeus</name>
- <_description>Croatia - US keyboard with Croatian digraphs</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Croatia - US keyboard with Croatian letters</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>cz</name>
- <_shortDescription>Cze</_shortDescription>
- <_description>Czechia</_description>
- <languageList>
- <iso639Id>cze</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>bksl</name>
- <_description>Czechia - With <\|> key</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
- <_description>Czechia - qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
- <_description>Czechia - qwerty, extended Backslash</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ucw</name>
- <_description>Czechia - UCW layout (accented letters only)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-ucw</name>
- <_description>Czechia - US Dvorak with CZ UCW support</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>dk</name>
- <_shortDescription>Dnk</_shortDescription>
- <_description>Denmark</_description>
- <languageList>
- <iso639Id>dan</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Denmark - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Denmark - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
- <_description>Denmark - Macintosh, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Denmark - Dvorak</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>nl</name>
- <_shortDescription>Nld</_shortDescription>
- <_description>Netherlands</_description>
- <languageList>
- <iso639Id>nld</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Netherlands - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Netherlands - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
- <_description>Netherlands - Standard</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>bt</name>
- <_shortDescription>Btn</_shortDescription>
- <_description>Bhutan</_description>
- <languageList>
- <iso639Id>dzo</iso639Id>
- </languageList>
- </configItem>
- </layout>
- <layout>
- <configItem>
- <name>ee</name>
- <_shortDescription>Est</_shortDescription>
- <_description>Estonia</_description>
- <languageList>
- <iso639Id>est</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Estonia - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Estonia - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Estonia - US keyboard with Estonian letters</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ir</name>
- <_shortDescription>Irn</_shortDescription>
- <_description>Iran</_description>
- <languageList>
- <iso639Id>per</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>pes_keypad</name>
- <_description>Iran - Persian, with Persian Keypad</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
- <_description>Iran - Kurdish, Latin Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_f</name>
- <_description>Iran - Kurdish, (F)</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_alt</name>
- <_description>Iran - Kurdish, Latin Alt-Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_ara</name>
- <_description>Iran - Kurdish, Arabic-Latin</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>iq</name>
- <_shortDescription>Irq</_shortDescription>
- <_description>Iraq</_description>
- <languageList><iso639Id>ara</iso639Id>
- <iso639Id>kur</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ku</name>
- <_description>Iraq - Kurdish, Latin Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_f</name>
- <_description>Iraq - Kurdish, (F)</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_alt</name>
- <_description>Iraq - Kurdish, Latin Alt-Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_ara</name>
- <_description>Iraq - Kurdish, Arabic-Latin</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>fo</name>
- <_shortDescription>Fro</_shortDescription>
- <_description>Faroe Islands</_description>
- <languageList>
- <iso639Id>fao</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Faroe Islands - Eliminate dead keys</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>fi</name>
- <_shortDescription>Fin</_shortDescription>
- <_description>Finland</_description>
- <languageList>
- <iso639Id>fin</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>classic</name>
- <_description>Finland - Classic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Finland - Classic, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
- <_description>Finland - Northern Saami</_description>
- <languageList><iso639Id>smi</iso639Id>
- <iso639Id>sme</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Finland - Macintosh</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>fr</name>
- <_shortDescription>Fra</_shortDescription>
- <_description>France</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>France - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>France - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss</name>
- <_description>France - Alternative</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_latin9</name>
- <_description>France - Alternative, latin-9 only</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_nodeadkeys</name>
- <_description>France - Alternative, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oss_sundeadkeys</name>
- <_description>France - Alternative, Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9</name>
- <_description>France - (Legacy) Alternative</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_nodeadkeys</name>
- <_description>France - (Legacy) Alternative, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin9_sundeadkeys</name>
- <_description>France - (Legacy) Alternative, Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo</name>
- <_description>France - Bepo, ergonomic, Dvorak way</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bepo_latin9</name>
- <_description>France - Bepo, ergonomic, Dvorak way, latin-9 only</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>France - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>France - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bre</name>
- <_description>France - Breton</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>oci</name>
- <_description>France - Occitan</_description>
- <languageList>
- <iso639Id>oci</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>geo</name>
- <_description>France - Georgian AZERTY Tskapo</_description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>gh</name>
- <_shortDescription>Gha</_shortDescription>
- <_description>Ghana</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>generic</name>
- <_description>Ghana - Multilingual</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>akan</name>
- <_description>Ghana - Akan</_description>
- <languageList>
- <iso639Id>aka</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ewe</name>
- <_description>Ghana - Ewe</_description>
- <languageList>
- <iso639Id>ewe</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fula</name>
- <_description>Ghana - Fula</_description>
- <languageList>
- <iso639Id>ful</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ga</name>
- <_description>Ghana - Ga</_description>
- <languageList>
- <iso639Id>gaa</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hausa</name>
- <_description>Ghana - Hausa</_description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>avn</name>
- <_description>Ghana - Avatime</_description>
- <languageList>
- <iso639Id>avn</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>gillbt</name>
- <_description>Ghana - GILLBT</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>gn</name>
- <_shortDescription>Gin</_shortDescription>
- <_description>Guinea</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>ge</name>
- <_shortDescription>Geo</_shortDescription>
- <_description>Georgia</_description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ergonomic</name>
- <_description>Georgia - Ergonomic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mess</name>
- <_description>Georgia - MESS</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
- <_description>Georgia - Russian</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>os</name>
- <_description>Georgia - Ossetian</_description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>de</name>
- <_shortDescription>Deu</_shortDescription>
- <_description>Germany</_description>
- <languageList>
- <iso639Id>ger</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>deadacute</name>
- <_description>Germany - Dead acute</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadgraveacute</name>
- <_description>Germany - Dead grave acute</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Germany - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro</name>
- <_description>Germany - Romanian keyboard with German letters</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ro_nodeadkeys</name>
- <_description>Germany - Romanian keyboard with German letters, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Germany - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Germany - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>neo</name>
- <_description>Germany - Neo 2</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Germany - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
- <_description>Germany - Macintosh, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dsb</name>
- <_description>Germany - Lower Sorbian</_description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dsb_qwertz</name>
- <_description>Germany - Lower Sorbian (qwertz)</_description>
- <languageList>
- <iso639Id>dsb</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
- <_description>Germany - qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru</name>
- <_description>Germany - Russian phonetic</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>gr</name>
- <_shortDescription>Grc</_shortDescription>
- <_description>Greece</_description>
- <languageList>
- <iso639Id>gre</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>simple</name>
- <_description>Greece - Simple</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>extended</name>
- <_description>Greece - Extended</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Greece - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>polytonic</name>
- <_description>Greece - Polytonic</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>hu</name>
- <_shortDescription>Hun</_shortDescription>
- <_description>Hungary</_description>
- <languageList>
- <iso639Id>hun</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>standard</name>
- <_description>Hungary - Standard</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Hungary - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
- <_description>Hungary - qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_dead</name>
- <_description>Hungary - 101/qwertz/comma/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_comma_nodead</name>
- <_description>Hungary - 101/qwertz/comma/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_dead</name>
- <_description>Hungary - 101/qwertz/dot/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwertz_dot_nodead</name>
- <_description>Hungary - 101/qwertz/dot/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_dead</name>
- <_description>Hungary - 101/qwerty/comma/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_comma_nodead</name>
- <_description>Hungary - 101/qwerty/comma/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_dead</name>
- <_description>Hungary - 101/qwerty/dot/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>101_qwerty_dot_nodead</name>
- <_description>Hungary - 101/qwerty/dot/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_dead</name>
- <_description>Hungary - 102/qwertz/comma/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_comma_nodead</name>
- <_description>Hungary - 102/qwertz/comma/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_dead</name>
- <_description>Hungary - 102/qwertz/dot/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwertz_dot_nodead</name>
- <_description>Hungary - 102/qwertz/dot/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_dead</name>
- <_description>Hungary - 102/qwerty/comma/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_comma_nodead</name>
- <_description>Hungary - 102/qwerty/comma/Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_dead</name>
- <_description>Hungary - 102/qwerty/dot/Dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>102_qwerty_dot_nodead</name>
- <_description>Hungary - 102/qwerty/dot/Eliminate dead keys</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>is</name>
- <_shortDescription>Isl</_shortDescription>
- <_description>Iceland</_description>
- <languageList>
- <iso639Id>ice</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>Sundeadkeys</name>
- <_description>Iceland - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Iceland - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Iceland - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Iceland - Dvorak</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>il</name>
- <_shortDescription>Isr</_shortDescription>
- <_description>Israel</_description>
- <languageList>
- <iso639Id>heb</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>lyx</name>
- <_description>Israel - lyx</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Israel - Phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>biblical</name>
- <_description>Israel - Biblical Hebrew (Tiro)</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>it</name>
- <_shortDescription>Ita</_shortDescription>
- <_description>Italy</_description>
- <languageList>
- <iso639Id>ita</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Italy - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Italy - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Italy - US keyboard with Italian letters</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>geo</name>
- <_description>Italy - Georgian</_description>
- <languageList>
- <iso639Id>geo</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>jp</name>
- <_shortDescription>Jpn</_shortDescription>
- <_description>Japan</_description>
- <languageList>
- <iso639Id>jpn</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>kana</name>
- <_description>Japan - Kana</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kana86</name>
- <_description>Japan - Kana 86</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>OADG109A</name>
- <_description>Japan - OADG 109A</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Japan - Macintosh</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>kg</name>
- <_shortDescription>Kgz</_shortDescription>
- <_description>Kyrgyzstan</_description>
- <languageList>
- <iso639Id>kir</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Kyrgyzstan - Phonetic</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>kh</name>
- <_shortDescription>Khm</_shortDescription>
- <_description>Cambodia</_description>
- <languageList>
- <iso639Id>khm</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>kz</name>
- <_shortDescription>Kaz</_shortDescription>
- <_description>Kazakhstan</_description>
- <languageList>
- <iso639Id>kaz</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>ruskaz</name>
- <_description>Kazakhstan - Russian with Kazakh</_description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kazrus</name>
- <_description>Kazakhstan - Kazakh with Russian</_description>
- <languageList><iso639Id>kaz</iso639Id>
- <iso639Id>rus</iso639Id></languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>la</name>
- <_shortDescription>Lao</_shortDescription>
- <_description>Laos</_description>
- <languageList>
- <iso639Id>lao</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>stea</name>
- <_description>Laos - STEA (proposed standard layout)</_description>
- <languageList><iso639Id>lao</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>latam</name>
- <_shortDescription>Esp</_shortDescription>
- <_description>Latin American</_description>
- <countryList>
- <iso3166Id>AR</iso3166Id>
- <iso3166Id>BO</iso3166Id>
- <iso3166Id>CL</iso3166Id>
- <iso3166Id>CO</iso3166Id>
- <iso3166Id>CR</iso3166Id>
- <iso3166Id>CU</iso3166Id>
- <iso3166Id>DO</iso3166Id>
- <iso3166Id>EC</iso3166Id>
- <iso3166Id>GT</iso3166Id>
- <iso3166Id>HN</iso3166Id>
- <iso3166Id>HT</iso3166Id>
- <iso3166Id>MX</iso3166Id>
- <iso3166Id>NI</iso3166Id>
- <iso3166Id>PA</iso3166Id>
- <iso3166Id>PE</iso3166Id>
- <iso3166Id>PR</iso3166Id>
- <iso3166Id>PY</iso3166Id>
- <iso3166Id>SV</iso3166Id>
- <iso3166Id>US</iso3166Id>
- <iso3166Id>UY</iso3166Id>
- <iso3166Id>VE</iso3166Id>
- </countryList>
- <languageList>
- <iso639Id>spa</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Latin American - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
- <_description>Latin American - Include dead tilde</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Latin American - Sun dead keys</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>lt</name>
- <_shortDescription>Ltu</_shortDescription>
- <_description>Lithuania</_description>
- <languageList>
- <iso639Id>lit</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>std</name>
- <_description>Lithuania - Standard</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Lithuania - US keyboard with Lithuanian letters</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ibm</name>
- <_description>Lithuania - IBM (LST 1205-92)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekp</name>
- <_description>Lithuania - LEKP</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>lekpa</name>
- <_description>Lithuania - LEKPa</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>lv</name>
- <_shortDescription>Lva</_shortDescription>
- <_description>Latvia</_description>
- <languageList>
- <iso639Id>lav</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>apostrophe</name>
- <_description>Latvia - Apostrophe (') variant</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tilde</name>
- <_description>Latvia - Tilde (~) variant</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fkey</name>
- <_description>Latvia - F-letter (F) variant</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mao</name>
- <_shortDescription>Mao</_shortDescription>
- <_description>Maori</_description>
- <languageList>
- <iso639Id>mao</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>me</name>
- <_shortDescription>MNE</_shortDescription>
- <_description>Montenegro</_description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>cyrillic</name>
- <_description>Montenegro - Cyrillic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicyz</name>
- <_description>Montenegro - Cyrillic, Z and ZHE swapped</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
- <_description>Montenegro - Latin unicode</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
- <_description>Montenegro - Latin qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
- <_description>Montenegro - Latin unicode qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cyrillicalternatequotes</name>
- <_description>Montenegro - Cyrillic with guillemets</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
- <_description>Montenegro - Latin with guillemets</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mk</name>
- <_shortDescription>Mkd</_shortDescription>
- <_description>Macedonia</_description>
- <languageList>
- <iso639Id>mkd</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Macedonia - Eliminate dead keys</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mt</name>
- <_shortDescription>Mlt</_shortDescription>
- <_description>Malta</_description>
- <languageList>
- <iso639Id>mlt</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Malta - Maltese keyboard with US layout</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mn</name>
- <_shortDescription>Mng</_shortDescription>
- <_description>Mongolia</_description>
- <languageList>
- <iso639Id>mng</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>no</name>
- <_shortDescription>Nor</_shortDescription>
- <_description>Norway</_description>
- <languageList>
- <iso639Id>nor</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Norway - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Norway - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
- <_description>Norway - Northern Saami</_description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi_nodeadkeys</name>
- <_description>Norway - Northern Saami, eliminate dead keys</_description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Norway - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
- <_description>Norway - Macintosh, eliminate dead keys</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>pl</name>
- <_shortDescription>Pol</_shortDescription>
- <_description>Poland</_description>
- <languageList>
- <iso639Id>pol</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>qwertz</name>
- <_description>Poland - qwertz</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Poland - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_quotes</name>
- <_description>Poland - Dvorak, Polish quotes on quotemark key</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak_altquotes</name>
- <_description>Poland - Dvorak, Polish quotes on key 1</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>csb</name>
- <_description>Poland - Kashubian</_description>
- <languageList>
- <iso639Id>csb</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ru_phonetic_dvorak</name>
- <_description>Poland - Russian phonetic Dvorak</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvp</name>
- <_description>Poland - Programmer Dvorak</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>pt</name>
- <_shortDescription>Prt</_shortDescription>
- <_description>Portugal</_description>
- <languageList>
- <iso639Id>por</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Portugal - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Portugal - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Portugal - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_nodeadkeys</name>
- <_description>Portugal - Macintosh, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_sundeadkeys</name>
- <_description>Portugal - Macintosh, Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo</name>
- <_description>Portugal - Nativo</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-us</name>
- <_description>Portugal - Nativo for USA keyboards</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>nativo-epo</name>
- <_description>Portugal - Nativo for Esperanto</_description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ro</name>
- <_shortDescription>Rou</_shortDescription>
- <_description>Romania</_description>
- <languageList>
- <iso639Id>rum</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>cedilla</name>
- <_description>Romania - Cedilla</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std</name>
- <_description>Romania - Standard</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>std_cedilla</name>
- <_description>Romania - Standard (Cedilla)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
- <_description>Romania - Winkeys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_f</name>
- <_description>Romania - Crimean Tatar (Turkish F)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_alt</name>
- <_description>Romania - Crimean Tatar (Turkish Alt-Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_dobruca1</name>
- <_description>Romania - Crimean Tatar (Dobruca-1 Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_dobruca2</name>
- <_description>Romania - Crimean Tatar (Dobruca-2 Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ru</name>
- <_shortDescription>Rus</_shortDescription>
- <_description>Russia</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Russia - Phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>phonetic_winkeys</name>
- <_description>Russia - Phonetic Winkeys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
- <_description>Russia - Typewriter</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Russia - Legacy</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter-legacy</name>
- <_description>Russia - Typewriter, legacy</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tt</name>
- <_description>Russia - Tatar</_description>
- <languageList>
- <iso639Id>tat</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>os_legacy</name>
- <_description>Russia - Ossetian, legacy</_description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>os_winkeys</name>
- <_description>Russia - Ossetian, Winkeys</_description>
- <languageList>
- <iso639Id>oss</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cv</name>
- <_description>Russia - Chuvash</_description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cv_latin</name>
- <_description>Russia - Chuvash Latin</_description>
- <languageList>
- <iso639Id>chv</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>udm</name>
- <_description>Russia - Udmurt</_description>
- <languageList>
- <iso639Id>udm</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>kom</name>
- <_description>Russia - Komi</_description>
- <languageList>
- <iso639Id>kom</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sah</name>
- <_description>Russia - Yakut</_description>
- <languageList>
- <iso639Id>sah</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>xal</name>
- <_description>Russia - Kalmyk</_description>
- <languageList>
- <iso639Id>xal</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dos</name>
- <_description>Russia - DOS</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>srp</name>
- <_description>Russia - Serbian</_description>
- <languageList><iso639Id>rus</iso639Id>
- <iso639Id>srp</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>bak</name>
- <_description>Russia - Bashkirian</_description>
- <languageList>
- <iso639Id>bak</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>chm</name>
- <_description>Russia - Mari</_description>
- <languageList>
- <iso639Id>chm</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>rs</name>
- <_shortDescription>SRB</_shortDescription>
- <_description>Serbia</_description>
- <languageList>
- <iso639Id>srp</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>yz</name>
- <_description>Serbia - Z and ZHE swapped</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latin</name>
- <_description>Serbia - Latin</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicode</name>
- <_description>Serbia - Latin Unicode</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinyz</name>
- <_description>Serbia - Latin qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinunicodeyz</name>
- <_description>Serbia - Latin Unicode qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alternatequotes</name>
- <_description>Serbia - With guillemets</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>latinalternatequotes</name>
- <_description>Serbia - Latin with guillemets</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rue</name>
- <_description>Serbia - Pannonian Rusyn Homophonic</_description>
- <languageList>
- <iso639Id>rue</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>si</name>
- <_shortDescription>Svn</_shortDescription>
- <_description>Slovenia</_description>
- <languageList>
- <iso639Id>slv</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>alternatequotes</name>
- <_description>Slovenia - Use guillemets for quotes</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us</name>
- <_description>Slovenia - US keyboard with Slovenian letters</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>sk</name>
- <_shortDescription>Svk</_shortDescription>
- <_description>Slovakia</_description>
- <languageList>
- <iso639Id>slo</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>bksl</name>
- <_description>Slovakia - Extended Backslash</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty</name>
- <_description>Slovakia - qwerty</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>qwerty_bksl</name>
- <_description>Slovakia - qwerty, extended Backslash</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>es</name>
- <_shortDescription>Esp</_shortDescription>
- <_description>Spain</_description>
- <languageList>
- <iso639Id>spa</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Spain - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>deadtilde</name>
- <_description>Spain - Include dead tilde</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Spain - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Spain - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ast</name>
- <_description>Spain - Asturian variant with bottom-dot H and bottom-dot L</_description>
- <languageList>
- <iso639Id>ast</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>cat</name>
- <_description>Spain - Catalan variant with middle-dot L</_description>
- <languageList>
- <iso639Id>cat</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Spain - Macintosh</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>se</name>
- <_shortDescription>Swe</_shortDescription>
- <_description>Sweden</_description>
- <languageList>
- <iso639Id>swe</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>nodeadkeys</name>
- <_description>Sweden - Eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Sweden - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus</name>
- <_description>Sweden - Russian phonetic</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rus_nodeadkeys</name>
- <_description>Sweden - Russian phonetic, eliminate dead keys</_description>
- <languageList>
- <iso639Id>rus</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>smi</name>
- <_description>Sweden - Northern Saami</_description>
- <languageList>
- <iso639Id>sme</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>Sweden - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>svdvorak</name>
- <_description>Sweden - Svdvorak</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ch</name>
- <_shortDescription>Che</_shortDescription>
- <_description>Switzerland</_description>
- <languageList><iso639Id>ger</iso639Id>
- <iso639Id>gsw</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Switzerland - Legacy</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_nodeadkeys</name>
- <_description>Switzerland - German, eliminate dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_sundeadkeys</name>
- <_description>Switzerland - German, Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr</name>
- <_description>Switzerland - French</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr_nodeadkeys</name>
- <_description>Switzerland - French, eliminate dead keys</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr_sundeadkeys</name>
- <_description>Switzerland - French, Sun dead keys</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>fr_mac</name>
- <_description>Switzerland - French (Macintosh)</_description>
- <languageList>
- <iso639Id>fra</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>de_mac</name>
- <_description>Switzerland - German (Macintosh)</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>sy</name>
- <_shortDescription>Syr</_shortDescription>
- <_description>Syria</_description>
- <languageList>
- <iso639Id>syr</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>syc</name>
- <_description>Syria - Syriac</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>syc_phonetic</name>
- <_description>Syria - Syriac phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
- <_description>Syria - Kurdish, Latin Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_f</name>
- <_description>Syria - Kurdish, (F)</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_alt</name>
- <_description>Syria - Kurdish, Latin Alt-Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>tj</name>
- <_shortDescription>Tjk</_shortDescription>
- <_description>Tajikistan</_description>
- <languageList>
- <iso639Id>tgk</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Tajikistan - Legacy</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>lk</name>
- <_shortDescription>Lka</_shortDescription>
- <_description>Sri Lanka</_description>
- <languageList>
- <iso639Id>sin</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>tam_unicode</name>
- <_description>Sri Lanka - Tamil Unicode</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>tam_TAB</name>
- <_description>Sri Lanka - Tamil TAB Typewriter</_description>
- <languageList>
- <iso639Id>tam</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>th</name>
- <_shortDescription>Tha</_shortDescription>
- <_description>Thailand</_description>
- <languageList>
- <iso639Id>tha</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>tis</name>
- <_description>Thailand - TIS-820.2538</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>pat</name>
- <_description>Thailand - Pattachote</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>tr</name>
- <_shortDescription>Tur</_shortDescription>
- <_description>Turkey</_description>
- <languageList>
- <iso639Id>tur</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>f</name>
- <_description>Turkey - (F)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>alt</name>
- <_description>Turkey - Alt-Q</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>sundeadkeys</name>
- <_description>Turkey - Sun dead keys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku</name>
- <_description>Turkey - Kurdish, Latin Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_f</name>
- <_description>Turkey - Kurdish, (F)</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ku_alt</name>
- <_description>Turkey - Kurdish, Latin Alt-Q</_description>
- <languageList>
- <iso639Id>kur</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
- <_description>Turkey - International (with dead keys)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh</name>
- <_description>Turkey - Crimean Tatar (Turkish Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_f</name>
- <_description>Turkey - Crimean Tatar (Turkish F)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_alt</name>
- <_description>Turkey - Crimean Tatar (Turkish Alt-Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>tw</name>
- <_shortDescription>Twn</_shortDescription>
- <_description>Taiwan</_description>
- <languageList>
- <iso639Id>trv</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>indigenous</name>
- <_description>Taiwan - Indigenous</_description>
- <languageList>
- <iso639Id>ami</iso639Id>
- <iso639Id>tay</iso639Id>
- <iso639Id>bnn</iso639Id>
- <iso639Id>ckv</iso639Id>
- <iso639Id>pwn</iso639Id>
- <iso639Id>pyu</iso639Id>
- <iso639Id>dru</iso639Id>
- <iso639Id>ais</iso639Id>
- <iso639Id>ssf</iso639Id>
- <iso639Id>tao</iso639Id>
- <iso639Id>tsu</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>saisiyat</name>
- <_description>Taiwan - Saisiyat</_description>
- <languageList>
- <iso639Id>xsf</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ua</name>
- <_shortDescription>Ukr</_shortDescription>
- <_description>Ukraine</_description>
- <languageList>
- <iso639Id>ukr</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>phonetic</name>
- <_description>Ukraine - Phonetic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>typewriter</name>
- <_description>Ukraine - Typewriter</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>winkeys</name>
- <_description>Ukraine - Winkeys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Ukraine - Legacy</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu</name>
- <_description>Ukraine - Standard RSTU</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>rstu_ru</name>
- <_description>Ukraine - Standard RSTU on Russian layout</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>homophonic</name>
- <_description>Ukraine - Homophonic</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh</name>
- <_description>Ukraine - Crimean Tatar (Turkish Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_f</name>
- <_description>Ukraine - Crimean Tatar (Turkish F)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_alt</name>
- <_description>Ukraine - Crimean Tatar (Turkish Alt-Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>gb</name>
- <_shortDescription>GBr</_shortDescription>
- <_description>United Kingdom</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>extd</name>
- <_description>United Kingdom - Extended - Winkeys</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>intl</name>
- <_description>United Kingdom - International (with dead keys)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>United Kingdom - Dvorak</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorakukp</name>
- <_description>United Kingdom - Dvorak (UK Punctuation)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac</name>
- <_description>United Kingdom - Macintosh</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>mac_intl</name>
- <_description>United Kingdom - Macintosh (International)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
- <_description>United Kingdom - Colemak</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>uz</name>
- <_shortDescription>Uzb</_shortDescription>
- <_description>Uzbekistan</_description>
- <languageList>
- <iso639Id>uzb</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>latin</name>
- <_description>Uzbekistan - Latin</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh</name>
- <_description>Uzbekistan - Crimean Tatar (Turkish Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_f</name>
- <_description>Uzbekistan - Crimean Tatar (Turkish F)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>crh_alt</name>
- <_description>Uzbekistan - Crimean Tatar (Turkish Alt-Q)</_description>
- <languageList>
- <iso639Id>crh</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>vn</name>
- <_shortDescription>Vnm</_shortDescription>
- <_description>Vietnam</_description>
- <languageList>
- <iso639Id>vie</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>kr</name>
- <_shortDescription>Kor</_shortDescription>
- <_description>Korea, Republic of</_description>
- <languageList>
- <iso639Id>kor</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>kr104</name>
- <_description>Korea, Republic of - 101/104 key Compatible</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>nec_vndr/jp</name>
- <_shortDescription>Jpn</_shortDescription>
- <_description>Japan (PC-98xx Series)</_description>
- <countryList>
- <iso3166Id>JP</iso3166Id>
- </countryList>
- <languageList>
- <iso639Id>jpn</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>ie</name>
- <_shortDescription>Irl</_shortDescription>
- <_description>Ireland</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>CloGaelach</name>
- <_description>Ireland - CloGaelach</_description>
- <languageList>
- <iso639Id>gla</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>UnicodeExpert</name>
- <_description>Ireland - UnicodeExpert</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ogam</name>
- <_description>Ireland - Ogham</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ogam_is434</name>
- <_description>Ireland - Ogham IS434</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>pk</name>
- <_shortDescription>Pak</_shortDescription>
- <_description>Pakistan</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>urd-crulp</name>
- <_description>Pakistan - CRULP</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>urd-nla</name>
- <_description>Pakistan - NLA</_description>
- <languageList>
- <iso639Id>urd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>ara</name>
- <_description>Pakistan - Arabic</_description>
- <languageList>
- <iso639Id>ara</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>snd</name>
- <_description>Pakistan - Sindhi</_description>
- <languageList>
- <iso639Id>sd</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>mv</name>
- <_shortDescription>Mdv</_shortDescription>
- <_description>Maldives</_description>
- <languageList>
- <iso639Id>div</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>za</name>
- <_shortDescription>Zaf</_shortDescription>
- <_description>South Africa</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- </layout>
- <layout>
- <configItem>
- <name>epo</name>
- <_shortDescription>Epo</_shortDescription>
- <_description>Esperanto</_description>
- <languageList>
- <iso639Id>epo</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>legacy</name>
- <_description>Esperanto - displaced semicolon and quote (obsolete)</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>np</name>
- <_shortDescription>Npl</_shortDescription>
- <_description>Nepal</_description>
- <languageList>
- <iso639Id>nep</iso639Id>
- </languageList>
- </configItem>
- </layout>
- <layout>
- <configItem>
- <name>ng</name>
- <_shortDescription>Nga</_shortDescription>
- <_description>Nigeria</_description>
- <languageList>
- <iso639Id>eng</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>igbo</name>
- <_description>Nigeria - Igbo</_description>
- <languageList>
- <iso639Id>ibo</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>yoruba</name>
- <_description>Nigeria - Yoruba</_description>
- <languageList>
- <iso639Id>yor</iso639Id>
- </languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>hausa</name>
- <_description>Nigeria - Hausa</_description>
- <languageList>
- <iso639Id>hau</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>et</name>
- <_shortDescription>Eth</_shortDescription>
- <_description>Ethiopia</_description>
- <languageList>
- <iso639Id>amh</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>sn</name>
- <_shortDescription>Sen</_shortDescription>
- <_description>Senegal</_description>
- <languageList>
- <iso639Id>wol</iso639Id>
- </languageList>
- </configItem>
- <variantList/>
- </layout>
- <layout>
- <configItem>
- <name>brai</name>
- <_shortDescription>Brl</_shortDescription>
- <_description>Braille</_description>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>left_hand</name>
- <_description>Braille - Left hand</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>right_hand</name>
- <_description>Braille - Right hand</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>tm</name>
- <_shortDescription>Tkm</_shortDescription>
- <_description>Turkmenistan</_description>
- <languageList>
- <iso639Id>tuk</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>alt</name>
- <_description>Turkmenistan - Alt-Q</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>ml</name>
- <_shortDescription>Mli</_shortDescription>
- <_description>Mali</_description>
- <languageList>
- <iso639Id>bam</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>fr-oss</name>
- <_description>Mali - Français (France Alternative)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us-mac</name>
- <_description>Mali - English (USA Macintosh)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>us-intl</name>
- <_description>Mali - English (USA International)</_description>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>tz</name>
- <_shortDescription>Tza</_shortDescription>
- <_description>Tanzania</_description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
- </configItem>
- </layout>
- <layout>
- <configItem>
- <name>ke</name>
- <_shortDescription>Ken</_shortDescription>
- <_description>Kenya</_description>
- <languageList>
- <iso639Id>swa</iso639Id>
- </languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>kik</name>
- <_description>Kenya - Kikuyu</_description>
- <languageList>
- <iso639Id>kik</iso639Id>
- </languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- <layout>
- <configItem>
- <name>bw</name>
- <_shortDescription>Bwa</_shortDescription>
- <_description>Botswana</_description>
- <languageList>
- <iso639Id>tsn</iso639Id>
- </languageList>
- </configItem>
- </layout>
- <layout>
- <configItem>
- <name>ph</name>
- <_shortDescription>Phi</_shortDescription>
- <_description>Philippines</_description>
- <languageList><iso639Id>eng</iso639Id>
- <iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- <variantList>
- <variant>
- <configItem>
- <name>qwerty-bay</name>
- <_description>Philippines - QWERTY (Baybayin)</_description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-dvorak</name>
- <_description>Philippines - Capewell-Dvorak (Latin)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-dvorak-bay</name>
- <_description>Philippines - Capewell-Dvorak (Baybayin)</_description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-qwerf2k6</name>
- <_description>Philippines - Capewell-QWERF 2006 (Latin)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>capewell-qwerf2k6-bay</name>
- <_description>Philippines - Capewell-QWERF 2006 (Baybayin)</_description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak</name>
- <_description>Philippines - Colemak (Latin)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>colemak-bay</name>
- <_description>Philippines - Colemak (Baybayin)</_description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak</name>
- <_description>Philippines - Dvorak (Latin)</_description>
- </configItem>
- </variant>
- <variant>
- <configItem>
- <name>dvorak-bay</name>
- <_description>Philippines - Dvorak (Baybayin)</_description>
- <languageList><iso639Id>bik</iso639Id>
- <iso639Id>ceb</iso639Id>
- <iso639Id>fil</iso639Id>
- <iso639Id>hil</iso639Id>
- <iso639Id>ilo</iso639Id>
- <iso639Id>pam</iso639Id>
- <iso639Id>pag</iso639Id>
- <iso639Id>phi</iso639Id>
- <iso639Id>tgl</iso639Id>
- <iso639Id>war</iso639Id></languageList>
- </configItem>
- </variant>
- </variantList>
- </layout>
- </layoutList>
- <optionList>
- <group allowMultipleSelection="true">
- <!-- The key combination used to switch between groups -->
- <configItem>
- <name>grp</name>
- <_description>Key(s) to change layout</_description>
- </configItem>
- <option>
- <configItem>
- <name>grp:switch</name>
- <_description>Right Alt (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lswitch</name>
- <_description>Left Alt (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_switch</name>
- <_description>Left Win (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_switch</name>
- <_description>Right Win (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_switch</name>
- <_description>Any Win key (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_switch</name>
- <_description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_switch</name>
- <_description>Right Ctrl (while pressed)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:toggle</name>
- <_description>Right Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lalt_toggle</name>
- <_description>Left Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:caps_toggle</name>
- <_description>Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_toggle</name>
- <_description>Shift+Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shift_caps_switch</name>
- <_description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:win_menu_switch</name>
- <_description>Left Win (to first layout), Right Win/Menu (to last layout)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_rctrl_switch</name>
- <_description>Left Ctrl (to first layout), Right Ctrl (to last layout)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_caps_toggle</name>
- <_description>Alt+Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:shifts_toggle</name>
- <_description>Both Shift keys together</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alts_toggle</name>
- <_description>Both Alt keys together</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrls_toggle</name>
- <_description>Both Ctrl keys together</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_shift_toggle</name>
- <_description>Ctrl+Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lshift_toggle</name>
- <_description>Left Ctrl+Left Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_rshift_toggle</name>
- <_description>Right Ctrl+Right Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:ctrl_alt_toggle</name>
- <_description>Alt+Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_shift_toggle</name>
- <_description>Alt+Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:alt_space_toggle</name>
- <_description>Alt+Space</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:menu_toggle</name>
- <_description>Menu</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lwin_toggle</name>
- <_description>Left Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rwin_toggle</name>
- <_description>Right Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lshift_toggle</name>
- <_description>Left Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rshift_toggle</name>
- <_description>Right Shift</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_toggle</name>
- <_description>Left Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:rctrl_toggle</name>
- <_description>Right Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:sclk_toggle</name>
- <_description>Scroll Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp:lctrl_lwin_rctrl_menu</name>
- <_description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <!-- The key combination used to choose the 3rd (and 4th, together with Shift)
- level of symbols -->
- <configItem>
- <name>lv3</name>
- <_description>Key to choose 3rd level</_description>
- </configItem>
- <option>
- <configItem>
- <name>lv3:switch</name>
- <_description>Right Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:menu_switch</name>
- <_description>Menu</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:win_switch</name>
- <_description>Any Win key</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lwin_switch</name>
- <_description>Left Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:rwin_switch</name>
- <_description>Right Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:alt_switch</name>
- <_description>Any Alt key</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lalt_switch</name>
- <_description>Left Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch</name>
- <_description>Right Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_switch_multikey</name>
- <_description>Right Alt, Shift+Right Alt key is Multi_Key</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:ralt_alt</name>
- <_description>Right Alt key never chooses 3rd level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:enter_switch</name>
- <_description>Enter on keypad</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch</name>
- <_description>Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch</name>
- <_description>Backslash</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch</name>
- <_description><Less/Greater></_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:caps_switch_latch</name>
- <_description>Caps Lock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:bksl_switch_latch</name>
- <_description>Backslash chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv3:lsgt_switch_latch</name>
- <_description><Less/Greater> (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <!-- Tweaking the position of the "Ctrl" key -->
- <configItem>
- <name>ctrl</name>
- <_description>Ctrl key position</_description>
- </configItem>
- <option>
- <configItem>
- <name>ctrl:nocaps</name>
- <_description>Make Caps Lock an additional Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:lctrl_meta</name>
- <_description>Meta on Left Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:swapcaps</name>
- <_description>Swap Ctrl and Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_ac</name>
- <_description>At left of 'A'</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_aa</name>
- <_description>At bottom left</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_ra</name>
- <_description>Right Ctrl as Right Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>ctrl:ctrl_menu</name>
- <_description>Right Ctrl is mapped to Menu</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <!-- Using startard LEDs to indicate the alternative (not first) group(s) -->
- <configItem>
- <name>grp_led</name>
- <_description>Use keyboard LED to show alternative layout</_description>
- </configItem>
- <option>
- <configItem>
- <name>grp_led:num</name>
- <_description>Num Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:caps</name>
- <_description>Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>grp_led:scroll</name>
- <_description>Scroll Lock</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <!-- Select a keypad type -->
- <configItem>
- <name>keypad</name>
- <_description>Numeric keypad layout selection</_description>
- </configItem>
- <option>
- <configItem>
- <name>keypad:legacy</name>
- <_description>Legacy</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss</name>
- <_description>Unicode additions (arrows and math operators)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future</name>
- <_description>Unicode additions (arrows and math operators). Math operators on default level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:legacy_wang</name>
- <_description>Legacy Wang 724</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:oss_wang</name>
- <_description>Wang 724 keypad with unicode additions (arrows and math operators)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:future_wang</name>
- <_description>Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:hex</name>
- <_description>Hexadecimal</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:atm</name>
- <_description>ATM/phone-style</_description>
- </configItem>
- </option>
- </group>
- <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place -->
- <group allowMultipleSelection="false">
- <!-- Select a keypad KPDL variant -->
- <configItem>
- <name>kpdl</name>
- <_description>Numeric keypad delete key behaviour</_description>
- </configItem>
- <option>
- <configItem>
- <!-- Actually, with KP_DECIMAL, as the old keypad(dot) -->
- <name>kpdl:dot</name>
- <_description>Legacy key with dot</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:comma</name>
- <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) -->
- <_description>Legacy key with comma</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss</name>
- <_description>Four-level key with dot</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:dotoss_latin9</name>
- <_description>Four-level key with dot, latin-9 restriction</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:commaoss</name>
- <_description>Four-level key with comma</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:momayyezoss</name>
- <_description>Four-level key with momayyez</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:kposs</name>
- <!-- This assumes the KP_ abstract symbols are actually useful for some apps
- The description needs to be rewritten -->
- <_description>Four-level key with abstract separators</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>kpdl:semi</name>
- <_description>Semi-colon on third level</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <!-- Caps Lock tweaks.
- "Internal" capitalization means capitalization using some internal tables.
- Otherwise "as Shift" - means using next group. -->
- <configItem>
- <name>caps</name>
- <_description>Caps Lock key behavior</_description>
- </configItem>
- <option>
- <configItem>
- <name>caps:internal</name>
- <_description>Caps Lock uses internal capitalization. Shift "pauses" Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:internal_nocancel</name>
- <_description>Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift</name>
- <_description>Caps Lock acts as Shift with locking. Shift "pauses" Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shift_nocancel</name>
- <_description>Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:capslock</name>
- <_description>Caps Lock toggles normal capitalization of alphabetic characters</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:numlock</name>
- <_description>Make Caps Lock an additional Num Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:swapescape</name>
- <_description>Swap ESC and Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:escape</name>
- <_description>Make Caps Lock an additional ESC</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:backspace</name>
- <_description>Make Caps Lock an additional Backspace</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:super</name>
- <_description>Make Caps Lock an additional Super</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:hyper</name>
- <_description>Make Caps Lock an additional Hyper</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:shiftlock</name>
- <_description>Caps Lock toggles Shift so all keys are affected</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:none</name>
- <_description>Caps Lock is disabled</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>caps:ctrl_modifier</name>
- <_description>Make Caps Lock an additional Control but keep the Caps_Lock keysym</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) -->
- <configItem>
- <name>altwin</name>
- <_description>Alt/Win key behavior</_description>
- </configItem>
- <option>
- <configItem>
- <name>altwin:menu</name>
- <_description>Add the standard behavior to Menu key</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_alt</name>
- <_description>Alt and Meta are on Alt keys</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_win</name>
- <_description>Control is mapped to Win keys (and the usual Ctrl keys)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:ctrl_alt_win</name>
- <_description>Control is mapped to Alt keys, Alt is mapped to Win keys</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:meta_win</name>
- <_description>Meta is mapped to Win keys</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:left_meta_win</name>
- <_description>Meta is mapped to Left Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:hyper_win</name>
- <_description>Hyper is mapped to Win-keys</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:alt_super_win</name>
- <_description>Alt is mapped to Right Win, Super to Menu</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>altwin:swap_lalt_lwin</name>
- <_description>Left Alt is swapped with Left Win</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys -->
- <configItem>
- <name>Compose key</name>
- <_description>Compose key position</_description>
- </configItem>
- <option>
- <configItem>
- <name>compose:ralt</name>
- <_description>Right Alt</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lwin</name>
- <_description>Left Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rwin</name>
- <_description>Right Win</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:menu</name>
- <_description>Menu</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:lctrl</name>
- <_description>Left Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:rctrl</name>
- <_description>Right Ctrl</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:caps</name>
- <_description>Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:102</name>
- <_description><Less/Greater></_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:paus</name>
- <_description>Pause</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:prsc</name>
- <_description>PrtSc</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>compose:sclk</name>
- <_description>Scroll Lock</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>compat</name>
- <_description>Miscellaneous compatibility options</_description>
- </configItem>
- <option>
- <configItem>
- <name>numpad:pc</name>
- <_description>Default numeric keypad keys</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:mac</name>
- <_description>Numeric keypad keys work as with Mac</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:microsoft</name>
- <_description>Shift with numeric keypad keys works as in MS Windows</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>numpad:shift3</name>
- <_description>Shift does not cancel Num Lock, chooses 3rd level instead</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>srvrkeys:none</name>
- <_description>Special keys (Ctrl+Alt+<key>) handled in a server</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>apple:alupckeys</name>
- <_description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:breaks_caps</name>
- <_description>Shift cancels Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>misc:typo</name>
- <_description>Enable extra typographic characters</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock</name>
- <_description>Both Shift-Keys together toggle Caps Lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_capslock_cancel</name>
- <_description>Both Shift-Keys together activate Caps Lock, one Shift-Key deactivates</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>shift:both_shiftlock</name>
- <_description>Both Shift-Keys together toggle ShiftLock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>keypad:pointerkeys</name>
- <_description>Toggle PointerKeys with Shift + NumLock.</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <!-- Special shortcuts for the Euro character -->
- <configItem>
- <name>eurosign</name>
- <_description>Adding currency signs to certain keys</_description>
- </configItem>
- <option>
- <configItem>
- <name>eurosign:e</name>
- <_description>Euro on E</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:2</name>
- <_description>Euro on 2</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:4</name>
- <_description>Euro on 4</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>eurosign:5</name>
- <_description>Euro on 5</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>rupeesign:4</name>
- <_description>Rupee on 4</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>lv5</name>
- <_description>Key to choose 5th level</_description>
- </configItem>
- <option>
- <configItem>
- <name>lv5:lsgt_switch_lock</name>
- <_description><Less/Greater> chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:ralt_switch_lock</name>
- <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lwin_switch_lock</name>
- <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:rwin_switch_lock</name>
- <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lsgt_switch_lock_cancel</name>
- <_description><Less/Greater> chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:ralt_switch_lock_cancel</name>
- <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lwin_switch_lock_cancel</name>
- <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:rwin_switch_lock_cancel</name>
- <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:lsgt_switch_lock_cancel</name>
- <_description><Less/Greater> chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>lv5:ralt_switch_lock_cancel</name>
- <_description>Right Alt chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level -->
- <configItem>
- <name>nbsp</name>
- <_description>Using space key to input non-breakable space character</_description>
- </configItem>
- <option>
- <configItem>
- <name>nbsp:none</name>
- <_description>Usual space at any level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level2</name>
- <_description>Non-breakable space character at second level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3</name>
- <_description>Non-breakable space character at third level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3s</name>
- <_description>Non-breakable space character at third level, nothing at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level3n</name>
- <_description>Non-breakable space character at third level, thin non-breakable space character at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4</name>
- <_description>Non-breakable space character at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4n</name>
- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:level4nl</name>
- <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2</name>
- <_description>Zero-width non-joiner character at second level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3</name>
- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2zwj3nb4</name>
- <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3</name>
- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3s</name>
- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3zwj4</name>
- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj2nb3nnb4</name>
- <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>nbsp:zwnj3zwj4</name>
- <_description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>japan</name>
- <_description>Japanese keyboard options</_description>
- </configItem>
- <option>
- <configItem>
- <name>japan:kana_lock</name>
- <_description>Kana Lock key is locking</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>japan:nicola_f_bs</name>
- <_description>NICOLA-F style Backspace</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="false">
- <configItem>
- <name>esperanto</name>
- <_description>Adding Esperanto circumflexes (supersigno)</_description>
- </configItem>
- <option>
- <configItem>
- <name>esperanto:qwerty</name>
- <_description>To the corresponding key in a Qwerty keyboard.</_description>
- </configItem>
- </option>
- <option>
- <configItem>
- <name>esperanto:dvorak</name>
- <_description>To the corresponding key in a Dvorak keyboard.</_description>
- </configItem>
- </option>
- </group>
- <group allowMultipleSelection="true">
- <configItem>
- <name>terminate</name>
- <_description>Key sequence to kill the X server</_description>
- </configItem>
- <option>
- <configItem>
- <name>terminate:ctrl_alt_bksp</name>
- <_description>Control + Alt + Backspace</_description>
- </configItem>
- </option>
- </group>
- </optionList>
-</xkbConfigRegistry>
+<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd"> +<xkbConfigRegistry version="1.1"> + <modelList> + <model> + <configItem> + <name>pc101</name> + <_description>Generic 101-key PC</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc102</name> + <_description>Generic 102-key (Intl) PC</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc104</name> + <_description>Generic 104-key PC</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc105</name> + <_description>Generic 105-key (Intl) PC</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell101</name> + <_description>Dell 101-key PC</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>latitude</name> + <_description>Dell Latitude series laptop</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellm65</name> + <_description>Dell Precision M65</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>everex</name> + <_description>Everex STEPnote</_description> + <vendor>Everex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>flexpro</name> + <_description>Keytronic FlexPro</_description> + <vendor>Keytronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft</name> + <_description>Microsoft Natural</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>omnikey101</name> + <_description>Northgate OmniKey 101</_description> + <vendor>Northgate</vendor> + </configItem> + </model> + <model> + <configItem> + <name>winbook</name> + <_description>Winbook Model XP5</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>pc98</name> + <_description>PC-98xx Series</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKB21</name> + <_description>A4Tech KB-21</_description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4techKBS8</name> + <_description>A4Tech KBS-8</_description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>a4_rfkb23</name> + <_description>A4Tech Wireless Desktop RFKB-23</_description> + <vendor>A4Tech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>airkey</name> + <_description>Acer AirKey V</_description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>azonaRF2300</name> + <_description>Azona RF2300 wireless Internet Keyboard</_description> + <vendor>Azona</vendor> + </configItem> + </model> + <model> + <configItem> + <name>scorpius</name> + <_description>Advance Scorpius KI</_description> + <vendor>Scorpius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>brother</name> + <_description>Brother Internet Keyboard</_description> + <vendor>Brother</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5113rf</name> + <_description>BTC 5113RF Multimedia</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5126t</name> + <_description>BTC 5126T</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc6301urf</name> + <_description>BTC 6301URF</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000</name> + <_description>BTC 9000</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9000a</name> + <_description>BTC 9000A</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9001ah</name> + <_description>BTC 9001AH</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc5090</name> + <_description>BTC 5090</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9019u</name> + <_description>BTC 9019U</_description> + <vendor>BTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>btc9116u</name> + <_description>BTC 9116U Mini Wireless Internet and Gaming</_description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblue</name> + <_description>Cherry Blue Line CyBo@rd</_description> + </configItem> + </model> + <model> + <configItem> + <name>cherryblueb</name> + <_description>Cherry CyMotion Master XPress</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybluea</name> + <_description>Cherry Blue Line CyBo@rd (alternate option)</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycyboard</name> + <_description>Cherry CyBo@rd USB-Hub</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrycmexpert</name> + <_description>Cherry CyMotion Expert</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cherrybunlim</name> + <_description>Cherry B.UNLIMITED</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony</name> + <_description>Chicony Internet Keyboard</_description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0108</name> + <_description>Chicony KU-0108</_description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony0420</name> + <_description>Chicony KU-0420</_description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>chicony9885</name> + <_description>Chicony KB-9885</_description> + <vendor>Chicony</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqeak8</name> + <_description>Compaq Easy Access Keyboard</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik7</name> + <_description>Compaq Internet Keyboard (7 keys)</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik13</name> + <_description>Compaq Internet Keyboard (13 keys)</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compaqik18</name> + <_description>Compaq Internet Keyboard (18 keys)</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>cymotionlinux</name> + <_description>Cherry CyMotion Master Linux</_description> + <vendor>Cherry</vendor> + </configItem> + </model> + <model> + <configItem> + <name>armada</name> + <_description>Laptop/notebook Compaq (eg. Armada) Laptop Keyboard</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>presario</name> + <_description>Laptop/notebook Compaq (eg. Presario) Internet Keyboard</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ipaq</name> + <_description>Compaq iPaq Keyboard</_description> + <vendor>Compaq</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dell</name> + <_description>Dell</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8125</name> + <_description>Dell SK-8125</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellsk8135</name> + <_description>Dell SK-8135</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dellusbmm</name> + <_description>Dell USB Multimedia Keyboard</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>inspiron</name> + <_description>Dell Laptop/notebook Inspiron 6xxx/8xxx</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>precision_m</name> + <_description>Dell Laptop/notebook Precision M series</_description> + <vendor>Dell</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dexxa</name> + <_description>Dexxa Wireless Desktop Keyboard</_description> + <vendor>Dexxa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>diamond</name> + <_description>Diamond 9801 / 9802 series</_description> + <vendor>Diamond</vendor> + </configItem> + </model> + <model> + <configItem> + <name>dtk2000</name> + <_description>DTK2000</_description> + </configItem> + </model> + <model> + <configItem> + <name>ennyah_dkb1008</name> + <_description>Ennyah DKB-1008</_description> + <vendor>Ennyah</vendor> + </configItem> + </model> + <model> + <configItem> + <name>fscaa1667g</name> + <_description>Fujitsu-Siemens Computers AMILO laptop</_description> + <vendor>Fujitsu-Siemens</vendor> + </configItem> + </model> + <model> + <configItem> + <name>genius</name> + <_description>Genius Comfy KB-16M / Genius MM Keyboard KWD-910</_description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy</name> + <_description>Genius Comfy KB-12e</_description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuscomfy2</name> + <_description>Genius Comfy KB-21e-Scroll</_description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskb19e</name> + <_description>Genius KB-19e NB</_description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>geniuskkb2050hs</name> + <_description>Genius KKB-2050HS</_description> + <vendor>Genius</vendor> + </configItem> + </model> + <model> + <configItem> + <name>gyration</name> + <_description>Gyration</_description> + <vendor>Gyration</vendor> + </configItem> + </model> + <model> + <configItem> + <name>htcdream</name> + <_description>HTC Dream</_description> + <vendor>HTC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>kinesis</name> + <_description>Kinesis</_description> + <vendor>Kinesis</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_base</name> + <_description>Logitech Generic Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logitech_g15</name> + <_description>Logitech G15 extra keys via G15daemon</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpi6</name> + <_description>Hewlett-Packard Internet Keyboard</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp250x</name> + <_description>Hewlett-Packard SK-250x Multimedia Keyboard</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gc</name> + <_description>Hewlett-Packard Omnibook XE3 GC</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxe3gf</name> + <_description>Hewlett-Packard Omnibook XE3 GF</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpxt1000</name> + <_description>Hewlett-Packard Omnibook XT1000</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpdv5</name> + <_description>Hewlett-Packard Pavilion dv5</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpzt11xx</name> + <_description>Hewlett-Packard Pavilion ZT11xx</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp500fa</name> + <_description>Hewlett-Packard Omnibook 500 FA</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp5xx</name> + <_description>Hewlett-Packard Omnibook 5xx</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpnx9020</name> + <_description>Hewlett-Packard nx9020</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hp6000</name> + <_description>Hewlett-Packard Omnibook 6000/6100</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>honeywell_euroboard</name> + <_description>Honeywell Euroboard</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hpmini110</name> + <_description>Hewlett-Packard Mini 110 Notebook</_description> + <vendor>Hewlett-Packard</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess</name> + <_description>IBM Rapid Access</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>rapidaccess2</name> + <_description>IBM Rapid Access II</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad</name> + <_description>IBM ThinkPad 560Z/600/600E/A22E</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpad60</name> + <_description>IBM ThinkPad R60/T60/R61/T61</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>thinkpadz60</name> + <_description>IBM ThinkPad Z60m/Z60t/Z61m/Z61t</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>ibm_spacesaver</name> + <_description>IBM Space Saver</_description> + <vendor>Lenovo (previously IBM)</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiaccess</name> + <_description>Logitech Access Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiclx300</name> + <_description>Logitech Cordless Desktop LX-300</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logii350</name> + <_description>Logitech Internet 350 Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logimel</name> + <_description>Logitech Media Elite Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd</name> + <_description>Logitech Cordless Desktop</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_it</name> + <_description>Logitech Cordless Desktop iTouch</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_nav</name> + <_description>Logitech Cordless Desktop Navigator</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicd_opt</name> + <_description>Logitech Cordless Desktop Optical</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicda</name> + <_description>Logitech Cordless Desktop (alternate option)</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdpa2</name> + <_description>Logitech Cordless Desktop Pro (alternate option 2)</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicfn</name> + <_description>Logitech Cordless Freedom/Desktop Navigator</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicdn</name> + <_description>Logitech Cordless Desktop Navigator</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiitc</name> + <_description>Logitech iTouch Cordless Keyboard (model Y-RB6)</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiik</name> + <_description>Logitech Internet Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>itouch</name> + <_description>Logitech iTouch</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logicink</name> + <_description>Logitech Internet Navigator Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiex110</name> + <_description>Logitech Cordless Desktop EX110</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkse</name> + <_description>Logitech iTouch Internet Navigator Keyboard SE</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiinkseusb</name> + <_description>Logitech iTouch Internet Navigator Keyboard SE (USB)</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultrax</name> + <_description>Logitech Ultra-X Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logiultraxc</name> + <_description>Logitech Ultra-X Cordless Media Desktop Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovo</name> + <_description>Logitech diNovo Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>logidinovoedge</name> + <_description>Logitech diNovo Edge Keyboard</_description> + <vendor>Logitech</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx1998</name> + <_description>Memorex MX1998</_description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2500</name> + <_description>Memorex MX2500 EZ-Access Keyboard</_description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>mx2750</name> + <_description>Memorex MX2750</_description> + <vendor>Memorex</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoft7000</name> + <_description>Microsoft Natural Wireless Ergonomic Keyboard 7000</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftinet</name> + <_description>Microsoft Internet Keyboard</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftpro</name> + <_description>Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprousb</name> + <_description>Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprooem</name> + <_description>Microsoft Natural Keyboard Pro OEM</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>vsonku306</name> + <_description>ViewSonic KU-306 Internet Keyboard</_description> + <vendor>ViewSonic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftprose</name> + <_description>Microsoft Internet Keyboard Pro, Swedish</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftoffice</name> + <_description>Microsoft Office Keyboard</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftmult</name> + <_description>Microsoft Wireless Multimedia Keyboard 1.0A</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftelite</name> + <_description>Microsoft Natural Keyboard Elite</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>microsoftccurve2k</name> + <_description>Microsoft Comfort Curve Keyboard 2000</_description> + <vendor>Microsoft Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>oretec</name> + <_description>Ortek MCK-800 MM/Internet keyboard</_description> + <vendor>Ortek</vendor> + </configItem> + </model> + <model> + <configItem> + <name>propeller</name> + <_description>Propeller Voyager (KTEZ-1000)</_description> + <vendor>KeyTronic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>qtronix</name> + <_description>QTronix Scorpius 98N+</_description> + <vendor>QTronix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4500</name> + <_description>Samsung SDM 4500P</_description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>samsung4510</name> + <_description>Samsung SDM 4510P</_description> + <vendor>Samsung</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sanwaskbkg3</name> + <_description>Sanwa Supply SKB-KG3</_description> + <vendor>Sanwa Supply Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk1300</name> + <_description>SK-1300</_description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk2500</name> + <_description>SK-2500</_description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk6200</name> + <_description>SK-6200</_description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sk7100</name> + <_description>SK-7100</_description> + <vendor>NEC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sp_inet</name> + <_description>Super Power Multimedia Keyboard</_description> + <vendor>Generic</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven</name> + <_description>SVEN Ergonomic 2500</_description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sven303</name> + <_description>SVEN Slim 303</_description> + <vendor>SVEN</vendor> + </configItem> + </model> + <model> + <configItem> + <name>symplon</name> + <_description>Symplon PaceBook (tablet PC)</_description> + <vendor>Symplon</vendor> + </configItem> + </model> + <model> + <configItem> + <name>toshiba_s3000</name> + <_description>Toshiba Satellite S3000</_description> + <vendor>Toshiba</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust</name> + <_description>Trust Wireless Keyboard Classic</_description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trustda</name> + <_description>Trust Direct Access Keyboard</_description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>trust_slimline</name> + <_description>Trust Slimline</_description> + <vendor>Trust</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2020</name> + <_description>TypeMatrix EZ-Reach 2020</_description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030PS2</name> + <_description>TypeMatrix EZ-Reach 2030 PS2</_description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB</name> + <_description>TypeMatrix EZ-Reach 2030 USB</_description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-102</name> + <_description>TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)</_description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>tm2030USB-106</name> + <_description>TypeMatrix EZ-Reach 2030 USB (106:JP mode)</_description> + <vendor>TypeMatrix</vendor> + </configItem> + </model> + <model> + <configItem> + <name>yahoo</name> + <_description>Yahoo! Internet Keyboard</_description> + <vendor>Yahoo!</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook78</name> + <_description>MacBook/MacBook Pro</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macbook79</name> + <_description>MacBook/MacBook Pro (Intl)</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh</name> + <_description>Macintosh</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_old</name> + <_description>Macintosh Old</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>macintosh_hhk</name> + <_description>Happy Hacking Keyboard for Mac</_description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_c300</name> + <_description>Acer C300</_description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_ferrari4k</name> + <_description>Acer Ferrari 4000</_description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>acer_laptop</name> + <_description>Acer Laptop</_description> + <vendor>Acer</vendor> + </configItem> + </model> + <model> + <configItem> + <name>asus_laptop</name> + <_description>Asus Laptop</_description> + <vendor>Asus</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple</name> + <_description>Apple</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>apple_laptop</name> + <_description>Apple Laptop</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_ansi</name> + <_description>Apple Aluminium Keyboard (ANSI)</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_iso</name> + <_description>Apple Aluminium Keyboard (ISO)</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>applealu_jis</name> + <_description>Apple Aluminium Keyboard (JIS)</_description> + <vendor>Apple</vendor> + </configItem> + </model> + <model> + <configItem> + <name>silvercrest</name> + <_description>SILVERCREST Multimedia Wireless Keyboard</_description> + <vendor>Silvercrest</vendor> + </configItem> + </model> + <model> + <configItem> + <name>emachines</name> + <_description>Laptop/notebook eMachines m68xx</_description> + <vendor>eMachines</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx</name> + <_description>BenQ X-Touch</_description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx730</name> + <_description>BenQ X-Touch 730</_description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>benqx800</name> + <_description>BenQ X-Touch 800</_description> + <vendor>BenQ</vendor> + </configItem> + </model> + <model> + <configItem> + <name>hhk</name> + <_description>Happy Hacking Keyboard</_description> + <vendor>Fujitsu</vendor> + </configItem> + </model> + <model> + <configItem> + <name>classmate</name> + <_description>Classmate PC</_description> + <vendor>Intel</vendor> + </configItem> + </model> + <model> + <configItem> + <name>olpc</name> + <_description>OLPC</_description> + <vendor>OLPC</vendor> + </configItem> + </model> + <model> + <configItem> + <name>sun6</name> + <_description>Sun Type 5/6</_description> + <vendor>Sun Microsystems</vendor> + </configItem> + </model> + <model> + <configItem> + <name>targa_v811</name> + <_description>Targa Visionary 811</_description> + <vendor>Targa</vendor> + </configItem> + </model> + <model> + <configItem> + <name>unitekkb1925</name> + <_description>Unitek KB-1925</_description> + <vendor>Unitek Group</vendor> + </configItem> + </model> + <model> + <configItem> + <name>compalfl90</name> + <_description>FL90</_description> + <vendor>Compal Electronics Inc.</vendor> + </configItem> + </model> + <model> + <configItem> + <name>creativedw7000</name> + <_description>Creative Desktop Wireless 7000</_description> + <vendor>Creative</vendor> + </configItem> + </model> + <model> + <configItem> + <name>htcdream</name> + <_description>Htc Dream phone</_description> + <vendor>htc</vendor> + </configItem> + </model> + </modelList> + <layoutList> + <layout> + <configItem> + <name>us</name> + <_shortDescription>USA</_shortDescription> + <_description>USA</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>chr</name> + <_description>USA - Cherokee</_description> + <languageList> + <iso639Id>chr</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>euro</name> + <_description>USA - With EuroSign on 5</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <_description>USA - International (with dead keys)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt-intl</name> + <_description>USA - Alternative international</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <_description>USA - Colemak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>USA - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-intl</name> + <_description>USA - Dvorak international (with dead keys)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-alt-intl</name> + <_description>USA - Dvorak alternative international (no dead keys)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-l</name> + <_description>USA - Left handed Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-r</name> + <_description>USA - Right handed Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-classic</name> + <_description>USA - Classic Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <_description>USA - Programmer Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <_description>USA - Russian phonetic</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>USA - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>altgr-intl</name> + <_description>USA - International (AltGr dead keys)</_description> + <languageList><iso639Id>eng</iso639Id> + <iso639Id>fra</iso639Id> + <iso639Id>ger</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc2</name> + <_description>USA - Layout toggle on multiply/divide key</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>hbs</name> + <_description>USA - Serbo-Croatian</_description> + <languageList><iso639Id>eng</iso639Id> + <iso639Id>bos</iso639Id> + <iso639Id>hbs</iso639Id> + <iso639Id>hrv</iso639Id> + <iso639Id>srp</iso639Id> </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ad</name> + <_shortDescription>And</_shortDescription> + <_description>Andorra</_description> + <languageList> + <iso639Id>cat</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>af</name> + <_shortDescription>Afg</_shortDescription> + <_description>Afghanistan</_description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ps</name> + <_description>Afghanistan - Pashto</_description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>uz</name> + <_description>Afghanistan - Southern Uzbek</_description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>olpc-ps</name> + <_description>Afghanistan - OLPC Pashto</_description> + <languageList> + <iso639Id>pus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fa-olpc</name> + <_description>Afghanistan - OLPC Dari</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>uz-olpc</name> + <_description>Afghanistan - OLPC Southern Uzbek</_description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ara</name> + <_shortDescription>Ara</_shortDescription> + <_description>Arabic</_description> + <countryList> + <iso3166Id>AE</iso3166Id> + <iso3166Id>BH</iso3166Id> + <iso3166Id>DZ</iso3166Id> + <iso3166Id>EG</iso3166Id> + <iso3166Id>EH</iso3166Id> + <iso3166Id>JO</iso3166Id> + <iso3166Id>KW</iso3166Id> + <iso3166Id>LB</iso3166Id> + <iso3166Id>LY</iso3166Id> + <iso3166Id>MA</iso3166Id> + <iso3166Id>MR</iso3166Id> + <iso3166Id>OM</iso3166Id> + <iso3166Id>PS</iso3166Id> + <iso3166Id>QA</iso3166Id> + <iso3166Id>SA</iso3166Id> + <iso3166Id>SD</iso3166Id> + <iso3166Id>SY</iso3166Id> + <iso3166Id>TN</iso3166Id> + <iso3166Id>YE</iso3166Id> + </countryList> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>azerty</name> + <_description>Arabic - azerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>azerty_digits</name> + <_description>Arabic - azerty/digits</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>digits</name> + <_description>Arabic - digits</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <_description>Arabic - qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_digits</name> + <_description>Arabic - qwerty/digits</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>buckwalter</name> + <_description>Arabic - Buckwalter</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>al</name> + <_shortDescription>Alb</_shortDescription> + <_description>Albania</_description> + <languageList> + <iso639Id>alb</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>am</name> + <_shortDescription>Arm</_shortDescription> + <_description>Armenia</_description> + <languageList> + <iso639Id>hye</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <_description>Armenia - Phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic-alt</name> + <_description>Armenia - Alternative Phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern</name> + <_description>Armenia - Eastern</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>western</name> + <_description>Armenia - Western</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>eastern-alt</name> + <_description>Armenia - Alternative Eastern</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>at</name> + <_shortDescription>Aut</_shortDescription> + <_description>Austria</_description> + <languageList> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Austria - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Austria - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Austria - Macintosh</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>az</name> + <_shortDescription>Aze</_shortDescription> + <_description>Azerbaijan</_description> + <languageList> + <iso639Id>aze</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <_description>Azerbaijan - Cyrillic</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>by</name> + <_shortDescription>Blr</_shortDescription> + <_description>Belarus</_description> + <languageList> + <iso639Id>bel</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <_description>Belarus - Legacy</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <_description>Belarus - Latin</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>be</name> + <_shortDescription>Bel</_shortDescription> + <_description>Belgium</_description> + <languageList><iso639Id>ger</iso639Id> + <iso639Id>nld</iso639Id> + <iso639Id>fra</iso639Id></languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>oss</name> + <_description>Belgium - Alternative</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <_description>Belgium - Alternative, latin-9 only</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <_description>Belgium - Alternative, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>iso-alternate</name> + <_description>Belgium - ISO Alternate</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Belgium - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Belgium - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>wang</name> + <_description>Belgium - Wang model 724 azerty</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bd</name> + <_shortDescription>Bgd</_shortDescription> + <_description>Bangladesh</_description> + <languageList> + <iso639Id>ben</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>probhat</name> + <_description>Bangladesh - Probhat</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>in</name> + <_shortDescription>Ind</_shortDescription> + <_description>India</_description> + </configItem> + <variantList> + <variant> + <configItem> + <name>ben</name> + <_description>India - Bengali</_description> + <languageList> + <iso639Id>ben</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ben_probhat</name> + <_description>India - Bengali Probhat</_description> + <languageList> + <iso639Id>ben</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guj</name> + <_description>India - Gujarati</_description> + <languageList> + <iso639Id>guj</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>guru</name> + <_description>India - Gurmukhi</_description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>jhelum</name> + <_description>India - Gurmukhi Jhelum</_description> + <languageList> + <iso639Id>pan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kan</name> + <_description>India - Kannada</_description> + <languageList> + <iso639Id>kan</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal</name> + <_description>India - Malayalam</_description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_lalitha</name> + <_description>India - Malayalam Lalitha</_description> + <languageList> + <iso639Id>mal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mal_enhanced</name> + <_description>India - Malayalam enhanced INSCRIPT with Rupee Sign</_description> + <languageList><iso639Id>mal</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ori</name> + <_description>India - Oriya</_description> + <languageList> + <iso639Id>ori</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_unicode</name> + <_description>India - Tamil Unicode</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_keyboard_with_numerals</name> + <_description>India - Tamil Keyboard with Numerals</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_TAB</name> + <_description>India - Tamil TAB Typewriter</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_TSCII</name> + <_description>India - Tamil TSCII Typewriter</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam</name> + <_description>India - Tamil</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tel</name> + <_description>India - Telugu</_description> + <languageList> + <iso639Id>tel</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic</name> + <_description>India - Urdu, Phonetic</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-phonetic3</name> + <_description>India - Urdu, Alternative phonetic</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-winkeys</name> + <_description>India - Urdu, Winkeys</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bolnagri</name> + <_description>India - Hindi Bolnagri</_description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hin-wx</name> + <_description>India - Hindi Wx</_description> + <languageList> + <iso639Id>hin</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <_description>India - English with RupeeSign</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ba</name> + <_shortDescription>Bih</_shortDescription> + <_description>Bosnia and Herzegovina</_description> + <languageList> + <iso639Id>bos</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <_description>Bosnia and Herzegovina - Use guillemets for quotes</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <_description>Bosnia and Herzegovina - Use Bosnian digraphs</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <_description>Bosnia and Herzegovina - US keyboard with Bosnian digraphs</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Bosnia and Herzegovina - US keyboard with Bosnian letters</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>br</name> + <_shortDescription>Bra</_shortDescription> + <_description>Brazil</_description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Brazil - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Brazil - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <_description>Brazil - Nativo</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <_description>Brazil - Nativo for USA keyboards</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <_description>Brazil - Nativo for Esperanto</_description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bg</name> + <_shortDescription>Bgr</_shortDescription> + <_description>Bulgaria</_description> + <languageList> + <iso639Id>bul</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <_description>Bulgaria - Traditional phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>bas_phonetic</name> + <_description>Bulgaria - New phonetic</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ma</name> + <_description>Morocco</_description> + </configItem> + <variantList> + <variant> + <configItem> + <name>french</name> + <_description>Morocco - French</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh</name> + <_description>Morocco - Tifinagh</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt</name> + <_description>Morocco - Tifinagh alternative</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-alt-phonetic</name> + <_description>Morocco - Tifinagh alternative phonetic</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended</name> + <_description>Morocco - Tifinagh extended</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-phonetic</name> + <_description>Morocco - Tifinagh phonetic</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tifinagh-extended-phonetic</name> + <_description>Morocco - Tifinagh extended phonetic</_description> + <languageList> + <iso639Id>ber</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mm</name> + <_shortDescription>Mmr</_shortDescription> + <_description>Myanmar</_description> + <languageList> + <iso639Id>mya</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>ca</name> + <_shortDescription>Can</_shortDescription> + <_description>Canada</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-dvorak</name> + <_description>Canada - French Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr-legacy</name> + <_description>Canada - French (legacy)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>multix</name> + <_description>Canada - Multilingual</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi</name> + <_description>Canada - Multilingual, first part</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>multi-2gr</name> + <_description>Canada - Multilingual, second part</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ike</name> + <_description>Canada - Inuktitut</_description> + <languageList> + <iso639Id>iku</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>shs</name> + <_description>Canada - Secwepemctsin</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>kut</name> + <_description>Canada - Ktunaxa</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>eng</name> + <_description>Canada - English</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cd</name> + <_shortDescription>COD</_shortDescription> + <_description>Congo, Democratic Republic of the</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>cn</name> + <_shortDescription>Chn</_shortDescription> + <_description>China</_description> + <languageList> + <iso639Id>chi</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tib</name> + <_description>China - Tibetan</_description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tib_asciinum</name> + <_description>China - Tibetan (with ASCII numerals)</_description> + <languageList> + <iso639Id>tib</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>uig</name> + <_description>China - Uyghur</_description> + <languageList> + <iso639Id>uig</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hr</name> + <_shortDescription>Hrv</_shortDescription> + <_description>Croatia</_description> + <languageList> + <iso639Id>scr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <_description>Croatia - Use guillemets for quotes</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicode</name> + <_description>Croatia - Use Croatian digraphs</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>unicodeus</name> + <_description>Croatia - US keyboard with Croatian digraphs</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Croatia - US keyboard with Croatian letters</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>cz</name> + <_shortDescription>Cze</_shortDescription> + <_description>Czechia</_description> + <languageList> + <iso639Id>cze</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <_description>Czechia - With <\|> key</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <_description>Czechia - qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <_description>Czechia - qwerty, extended Backslash</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ucw</name> + <_description>Czechia - UCW layout (accented letters only)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-ucw</name> + <_description>Czechia - US Dvorak with CZ UCW support</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>dk</name> + <_shortDescription>Dnk</_shortDescription> + <_description>Denmark</_description> + <languageList> + <iso639Id>dan</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Denmark - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Denmark - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <_description>Denmark - Macintosh, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Denmark - Dvorak</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nl</name> + <_shortDescription>Nld</_shortDescription> + <_description>Netherlands</_description> + <languageList> + <iso639Id>nld</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Netherlands - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Netherlands - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <_description>Netherlands - Standard</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bt</name> + <_shortDescription>Btn</_shortDescription> + <_description>Bhutan</_description> + <languageList> + <iso639Id>dzo</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ee</name> + <_shortDescription>Est</_shortDescription> + <_description>Estonia</_description> + <languageList> + <iso639Id>est</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Estonia - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Estonia - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Estonia - US keyboard with Estonian letters</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ir</name> + <_shortDescription>Irn</_shortDescription> + <_description>Iran</_description> + <languageList> + <iso639Id>per</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>pes_keypad</name> + <_description>Iran - Persian, with Persian Keypad</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <_description>Iran - Kurdish, Latin Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <_description>Iran - Kurdish, (F)</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <_description>Iran - Kurdish, Latin Alt-Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <_description>Iran - Kurdish, Arabic-Latin</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>iq</name> + <_shortDescription>Irq</_shortDescription> + <_description>Iraq</_description> + <languageList><iso639Id>ara</iso639Id> + <iso639Id>kur</iso639Id></languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ku</name> + <_description>Iraq - Kurdish, Latin Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <_description>Iraq - Kurdish, (F)</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <_description>Iraq - Kurdish, Latin Alt-Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_ara</name> + <_description>Iraq - Kurdish, Arabic-Latin</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fo</name> + <_shortDescription>Fro</_shortDescription> + <_description>Faroe Islands</_description> + <languageList> + <iso639Id>fao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Faroe Islands - Eliminate dead keys</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fi</name> + <_shortDescription>Fin</_shortDescription> + <_description>Finland</_description> + <languageList> + <iso639Id>fin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>classic</name> + <_description>Finland - Classic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Finland - Classic, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <_description>Finland - Northern Saami</_description> + <languageList><iso639Id>smi</iso639Id> + <iso639Id>sme</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Finland - Macintosh</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>fr</name> + <_shortDescription>Fra</_shortDescription> + <_description>France</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>France - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>France - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss</name> + <_description>France - Alternative</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_latin9</name> + <_description>France - Alternative, latin-9 only</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_nodeadkeys</name> + <_description>France - Alternative, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oss_sundeadkeys</name> + <_description>France - Alternative, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9</name> + <_description>France - (Legacy) Alternative</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_nodeadkeys</name> + <_description>France - (Legacy) Alternative, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin9_sundeadkeys</name> + <_description>France - (Legacy) Alternative, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo</name> + <_description>France - Bepo, ergonomic, Dvorak way</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>bepo_latin9</name> + <_description>France - Bepo, ergonomic, Dvorak way, latin-9 only</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>France - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>France - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>bre</name> + <_description>France - Breton</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>oci</name> + <_description>France - Occitan</_description> + <languageList> + <iso639Id>oci</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <_description>France - Georgian AZERTY Tskapo</_description> + <languageList> + <iso639Id>geo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gh</name> + <_shortDescription>Gha</_shortDescription> + <_description>Ghana</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>generic</name> + <_description>Ghana - Multilingual</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>akan</name> + <_description>Ghana - Akan</_description> + <languageList> + <iso639Id>aka</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ewe</name> + <_description>Ghana - Ewe</_description> + <languageList> + <iso639Id>ewe</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fula</name> + <_description>Ghana - Fula</_description> + <languageList> + <iso639Id>ful</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ga</name> + <_description>Ghana - Ga</_description> + <languageList> + <iso639Id>gaa</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <_description>Ghana - Hausa</_description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>avn</name> + <_description>Ghana - Avatime</_description> + <languageList> + <iso639Id>avn</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>gillbt</name> + <_description>Ghana - GILLBT</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gn</name> + <_shortDescription>Gin</_shortDescription> + <_description>Guinea</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>ge</name> + <_shortDescription>Geo</_shortDescription> + <_description>Georgia</_description> + <languageList> + <iso639Id>geo</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ergonomic</name> + <_description>Georgia - Ergonomic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mess</name> + <_description>Georgia - MESS</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <_description>Georgia - Russian</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os</name> + <_description>Georgia - Ossetian</_description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>de</name> + <_shortDescription>Deu</_shortDescription> + <_description>Germany</_description> + <languageList> + <iso639Id>ger</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>deadacute</name> + <_description>Germany - Dead acute</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadgraveacute</name> + <_description>Germany - Dead grave acute</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Germany - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ro</name> + <_description>Germany - Romanian keyboard with German letters</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ro_nodeadkeys</name> + <_description>Germany - Romanian keyboard with German letters, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Germany - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Germany - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>neo</name> + <_description>Germany - Neo 2</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Germany - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <_description>Germany - Macintosh, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb</name> + <_description>Germany - Lower Sorbian</_description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dsb_qwertz</name> + <_description>Germany - Lower Sorbian (qwertz)</_description> + <languageList> + <iso639Id>dsb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <_description>Germany - qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ru</name> + <_description>Germany - Russian phonetic</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gr</name> + <_shortDescription>Grc</_shortDescription> + <_description>Greece</_description> + <languageList> + <iso639Id>gre</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>simple</name> + <_description>Greece - Simple</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>extended</name> + <_description>Greece - Extended</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Greece - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>polytonic</name> + <_description>Greece - Polytonic</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>hu</name> + <_shortDescription>Hun</_shortDescription> + <_description>Hungary</_description> + <languageList> + <iso639Id>hun</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>standard</name> + <_description>Hungary - Standard</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Hungary - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <_description>Hungary - qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_dead</name> + <_description>Hungary - 101/qwertz/comma/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_comma_nodead</name> + <_description>Hungary - 101/qwertz/comma/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_dead</name> + <_description>Hungary - 101/qwertz/dot/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwertz_dot_nodead</name> + <_description>Hungary - 101/qwertz/dot/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_dead</name> + <_description>Hungary - 101/qwerty/comma/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_comma_nodead</name> + <_description>Hungary - 101/qwerty/comma/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_dead</name> + <_description>Hungary - 101/qwerty/dot/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>101_qwerty_dot_nodead</name> + <_description>Hungary - 101/qwerty/dot/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_dead</name> + <_description>Hungary - 102/qwertz/comma/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_comma_nodead</name> + <_description>Hungary - 102/qwertz/comma/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_dead</name> + <_description>Hungary - 102/qwertz/dot/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwertz_dot_nodead</name> + <_description>Hungary - 102/qwertz/dot/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_dead</name> + <_description>Hungary - 102/qwerty/comma/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_comma_nodead</name> + <_description>Hungary - 102/qwerty/comma/Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_dead</name> + <_description>Hungary - 102/qwerty/dot/Dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>102_qwerty_dot_nodead</name> + <_description>Hungary - 102/qwerty/dot/Eliminate dead keys</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>is</name> + <_shortDescription>Isl</_shortDescription> + <_description>Iceland</_description> + <languageList> + <iso639Id>ice</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>Sundeadkeys</name> + <_description>Iceland - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Iceland - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Iceland - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Iceland - Dvorak</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>il</name> + <_shortDescription>Isr</_shortDescription> + <_description>Israel</_description> + <languageList> + <iso639Id>heb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>lyx</name> + <_description>Israel - lyx</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic</name> + <_description>Israel - Phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>biblical</name> + <_description>Israel - Biblical Hebrew (Tiro)</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>it</name> + <_shortDescription>Ita</_shortDescription> + <_description>Italy</_description> + <languageList> + <iso639Id>ita</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Italy - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Italy - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Italy - US keyboard with Italian letters</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>geo</name> + <_description>Italy - Georgian</_description> + <languageList> + <iso639Id>geo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>jp</name> + <_shortDescription>Jpn</_shortDescription> + <_description>Japan</_description> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kana</name> + <_description>Japan - Kana</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>kana86</name> + <_description>Japan - Kana 86</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>OADG109A</name> + <_description>Japan - OADG 109A</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Japan - Macintosh</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kg</name> + <_shortDescription>Kgz</_shortDescription> + <_description>Kyrgyzstan</_description> + <languageList> + <iso639Id>kir</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <_description>Kyrgyzstan - Phonetic</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>kh</name> + <_shortDescription>Khm</_shortDescription> + <_description>Cambodia</_description> + <languageList> + <iso639Id>khm</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>kz</name> + <_shortDescription>Kaz</_shortDescription> + <_description>Kazakhstan</_description> + <languageList> + <iso639Id>kaz</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>ruskaz</name> + <_description>Kazakhstan - Russian with Kazakh</_description> + <languageList><iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kazrus</name> + <_description>Kazakhstan - Kazakh with Russian</_description> + <languageList><iso639Id>kaz</iso639Id> + <iso639Id>rus</iso639Id></languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>la</name> + <_shortDescription>Lao</_shortDescription> + <_description>Laos</_description> + <languageList> + <iso639Id>lao</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>stea</name> + <_description>Laos - STEA (proposed standard layout)</_description> + <languageList><iso639Id>lao</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>latam</name> + <_shortDescription>Esp</_shortDescription> + <_description>Latin American</_description> + <countryList> + <iso3166Id>AR</iso3166Id> + <iso3166Id>BO</iso3166Id> + <iso3166Id>CL</iso3166Id> + <iso3166Id>CO</iso3166Id> + <iso3166Id>CR</iso3166Id> + <iso3166Id>CU</iso3166Id> + <iso3166Id>DO</iso3166Id> + <iso3166Id>EC</iso3166Id> + <iso3166Id>GT</iso3166Id> + <iso3166Id>HN</iso3166Id> + <iso3166Id>HT</iso3166Id> + <iso3166Id>MX</iso3166Id> + <iso3166Id>NI</iso3166Id> + <iso3166Id>PA</iso3166Id> + <iso3166Id>PE</iso3166Id> + <iso3166Id>PR</iso3166Id> + <iso3166Id>PY</iso3166Id> + <iso3166Id>SV</iso3166Id> + <iso3166Id>US</iso3166Id> + <iso3166Id>UY</iso3166Id> + <iso3166Id>VE</iso3166Id> + </countryList> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Latin American - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <_description>Latin American - Include dead tilde</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Latin American - Sun dead keys</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lt</name> + <_shortDescription>Ltu</_shortDescription> + <_description>Lithuania</_description> + <languageList> + <iso639Id>lit</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>std</name> + <_description>Lithuania - Standard</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Lithuania - US keyboard with Lithuanian letters</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ibm</name> + <_description>Lithuania - IBM (LST 1205-92)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekp</name> + <_description>Lithuania - LEKP</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>lekpa</name> + <_description>Lithuania - LEKPa</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lv</name> + <_shortDescription>Lva</_shortDescription> + <_description>Latvia</_description> + <languageList> + <iso639Id>lav</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>apostrophe</name> + <_description>Latvia - Apostrophe (') variant</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>tilde</name> + <_description>Latvia - Tilde (~) variant</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>fkey</name> + <_description>Latvia - F-letter (F) variant</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mao</name> + <_shortDescription>Mao</_shortDescription> + <_description>Maori</_description> + <languageList> + <iso639Id>mao</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>me</name> + <_shortDescription>MNE</_shortDescription> + <_description>Montenegro</_description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cyrillic</name> + <_description>Montenegro - Cyrillic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicyz</name> + <_description>Montenegro - Cyrillic, Z and ZHE swapped</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <_description>Montenegro - Latin unicode</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <_description>Montenegro - Latin qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <_description>Montenegro - Latin unicode qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>cyrillicalternatequotes</name> + <_description>Montenegro - Cyrillic with guillemets</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <_description>Montenegro - Latin with guillemets</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mk</name> + <_shortDescription>Mkd</_shortDescription> + <_description>Macedonia</_description> + <languageList> + <iso639Id>mkd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Macedonia - Eliminate dead keys</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mt</name> + <_shortDescription>Mlt</_shortDescription> + <_description>Malta</_description> + <languageList> + <iso639Id>mlt</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>us</name> + <_description>Malta - Maltese keyboard with US layout</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mn</name> + <_shortDescription>Mng</_shortDescription> + <_description>Mongolia</_description> + <languageList> + <iso639Id>mng</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>no</name> + <_shortDescription>Nor</_shortDescription> + <_description>Norway</_description> + <languageList> + <iso639Id>nor</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Norway - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Norway - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <_description>Norway - Northern Saami</_description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi_nodeadkeys</name> + <_description>Norway - Northern Saami, eliminate dead keys</_description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Norway - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <_description>Norway - Macintosh, eliminate dead keys</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pl</name> + <_shortDescription>Pol</_shortDescription> + <_description>Poland</_description> + <languageList> + <iso639Id>pol</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>qwertz</name> + <_description>Poland - qwertz</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Poland - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_quotes</name> + <_description>Poland - Dvorak, Polish quotes on quotemark key</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak_altquotes</name> + <_description>Poland - Dvorak, Polish quotes on key 1</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>csb</name> + <_description>Poland - Kashubian</_description> + <languageList> + <iso639Id>csb</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ru_phonetic_dvorak</name> + <_description>Poland - Russian phonetic Dvorak</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvp</name> + <_description>Poland - Programmer Dvorak</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pt</name> + <_shortDescription>Prt</_shortDescription> + <_description>Portugal</_description> + <languageList> + <iso639Id>por</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Portugal - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Portugal - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Portugal - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_nodeadkeys</name> + <_description>Portugal - Macintosh, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_sundeadkeys</name> + <_description>Portugal - Macintosh, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo</name> + <_description>Portugal - Nativo</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-us</name> + <_description>Portugal - Nativo for USA keyboards</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>nativo-epo</name> + <_description>Portugal - Nativo for Esperanto</_description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ro</name> + <_shortDescription>Rou</_shortDescription> + <_description>Romania</_description> + <languageList> + <iso639Id>rum</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>cedilla</name> + <_description>Romania - Cedilla</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>std</name> + <_description>Romania - Standard</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>std_cedilla</name> + <_description>Romania - Standard (Cedilla)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <_description>Romania - Winkeys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <_description>Romania - Crimean Tatar (Turkish F)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <_description>Romania - Crimean Tatar (Turkish Alt-Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_dobruca1</name> + <_description>Romania - Crimean Tatar (Dobruca-1 Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_dobruca2</name> + <_description>Romania - Crimean Tatar (Dobruca-2 Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ru</name> + <_shortDescription>Rus</_shortDescription> + <_description>Russia</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <_description>Russia - Phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>phonetic_winkeys</name> + <_description>Russia - Phonetic Winkeys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <_description>Russia - Typewriter</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <_description>Russia - Legacy</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter-legacy</name> + <_description>Russia - Typewriter, legacy</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>tt</name> + <_description>Russia - Tatar</_description> + <languageList> + <iso639Id>tat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_legacy</name> + <_description>Russia - Ossetian, legacy</_description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>os_winkeys</name> + <_description>Russia - Ossetian, Winkeys</_description> + <languageList> + <iso639Id>oss</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv</name> + <_description>Russia - Chuvash</_description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cv_latin</name> + <_description>Russia - Chuvash Latin</_description> + <languageList> + <iso639Id>chv</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>udm</name> + <_description>Russia - Udmurt</_description> + <languageList> + <iso639Id>udm</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>kom</name> + <_description>Russia - Komi</_description> + <languageList> + <iso639Id>kom</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>sah</name> + <_description>Russia - Yakut</_description> + <languageList> + <iso639Id>sah</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>xal</name> + <_description>Russia - Kalmyk</_description> + <languageList> + <iso639Id>xal</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dos</name> + <_description>Russia - DOS</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>srp</name> + <_description>Russia - Serbian</_description> + <languageList><iso639Id>rus</iso639Id> + <iso639Id>srp</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>bak</name> + <_description>Russia - Bashkirian</_description> + <languageList> + <iso639Id>bak</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>chm</name> + <_description>Russia - Mari</_description> + <languageList> + <iso639Id>chm</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>rs</name> + <_shortDescription>SRB</_shortDescription> + <_description>Serbia</_description> + <languageList> + <iso639Id>srp</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>yz</name> + <_description>Serbia - Z and ZHE swapped</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latin</name> + <_description>Serbia - Latin</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicode</name> + <_description>Serbia - Latin Unicode</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinyz</name> + <_description>Serbia - Latin qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinunicodeyz</name> + <_description>Serbia - Latin Unicode qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>alternatequotes</name> + <_description>Serbia - With guillemets</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>latinalternatequotes</name> + <_description>Serbia - Latin with guillemets</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>rue</name> + <_description>Serbia - Pannonian Rusyn Homophonic</_description> + <languageList> + <iso639Id>rue</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>si</name> + <_shortDescription>Svn</_shortDescription> + <_description>Slovenia</_description> + <languageList> + <iso639Id>slv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alternatequotes</name> + <_description>Slovenia - Use guillemets for quotes</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us</name> + <_description>Slovenia - US keyboard with Slovenian letters</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sk</name> + <_shortDescription>Svk</_shortDescription> + <_description>Slovakia</_description> + <languageList> + <iso639Id>slo</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>bksl</name> + <_description>Slovakia - Extended Backslash</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty</name> + <_description>Slovakia - qwerty</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>qwerty_bksl</name> + <_description>Slovakia - qwerty, extended Backslash</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>es</name> + <_shortDescription>Esp</_shortDescription> + <_description>Spain</_description> + <languageList> + <iso639Id>spa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Spain - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>deadtilde</name> + <_description>Spain - Include dead tilde</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Spain - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Spain - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ast</name> + <_description>Spain - Asturian variant with bottom-dot H and bottom-dot L</_description> + <languageList> + <iso639Id>ast</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>cat</name> + <_description>Spain - Catalan variant with middle-dot L</_description> + <languageList> + <iso639Id>cat</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Spain - Macintosh</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>se</name> + <_shortDescription>Swe</_shortDescription> + <_description>Sweden</_description> + <languageList> + <iso639Id>swe</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>nodeadkeys</name> + <_description>Sweden - Eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Sweden - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>rus</name> + <_description>Sweden - Russian phonetic</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>rus_nodeadkeys</name> + <_description>Sweden - Russian phonetic, eliminate dead keys</_description> + <languageList> + <iso639Id>rus</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>smi</name> + <_description>Sweden - Northern Saami</_description> + <languageList> + <iso639Id>sme</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>Sweden - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>svdvorak</name> + <_description>Sweden - Svdvorak</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ch</name> + <_shortDescription>Che</_shortDescription> + <_description>Switzerland</_description> + <languageList><iso639Id>ger</iso639Id> + <iso639Id>gsw</iso639Id></languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <_description>Switzerland - Legacy</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_nodeadkeys</name> + <_description>Switzerland - German, eliminate dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>de_sundeadkeys</name> + <_description>Switzerland - German, Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>fr</name> + <_description>Switzerland - French</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_nodeadkeys</name> + <_description>Switzerland - French, eliminate dead keys</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_sundeadkeys</name> + <_description>Switzerland - French, Sun dead keys</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>fr_mac</name> + <_description>Switzerland - French (Macintosh)</_description> + <languageList> + <iso639Id>fra</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>de_mac</name> + <_description>Switzerland - German (Macintosh)</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>sy</name> + <_shortDescription>Syr</_shortDescription> + <_description>Syria</_description> + <languageList> + <iso639Id>syr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>syc</name> + <_description>Syria - Syriac</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>syc_phonetic</name> + <_description>Syria - Syriac phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <_description>Syria - Kurdish, Latin Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <_description>Syria - Kurdish, (F)</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <_description>Syria - Kurdish, Latin Alt-Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tj</name> + <_shortDescription>Tjk</_shortDescription> + <_description>Tajikistan</_description> + <languageList> + <iso639Id>tgk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <_description>Tajikistan - Legacy</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>lk</name> + <_shortDescription>Lka</_shortDescription> + <_description>Sri Lanka</_description> + <languageList> + <iso639Id>sin</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tam_unicode</name> + <_description>Sri Lanka - Tamil Unicode</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>tam_TAB</name> + <_description>Sri Lanka - Tamil TAB Typewriter</_description> + <languageList> + <iso639Id>tam</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>th</name> + <_shortDescription>Tha</_shortDescription> + <_description>Thailand</_description> + <languageList> + <iso639Id>tha</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>tis</name> + <_description>Thailand - TIS-820.2538</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>pat</name> + <_description>Thailand - Pattachote</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tr</name> + <_shortDescription>Tur</_shortDescription> + <_description>Turkey</_description> + <languageList> + <iso639Id>tur</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>f</name> + <_description>Turkey - (F)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>alt</name> + <_description>Turkey - Alt-Q</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>sundeadkeys</name> + <_description>Turkey - Sun dead keys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ku</name> + <_description>Turkey - Kurdish, Latin Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_f</name> + <_description>Turkey - Kurdish, (F)</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ku_alt</name> + <_description>Turkey - Kurdish, Latin Alt-Q</_description> + <languageList> + <iso639Id>kur</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <_description>Turkey - International (with dead keys)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh</name> + <_description>Turkey - Crimean Tatar (Turkish Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <_description>Turkey - Crimean Tatar (Turkish F)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <_description>Turkey - Crimean Tatar (Turkish Alt-Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tw</name> + <_shortDescription>Twn</_shortDescription> + <_description>Taiwan</_description> + <languageList> + <iso639Id>trv</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>indigenous</name> + <_description>Taiwan - Indigenous</_description> + <languageList> + <iso639Id>ami</iso639Id> + <iso639Id>tay</iso639Id> + <iso639Id>bnn</iso639Id> + <iso639Id>ckv</iso639Id> + <iso639Id>pwn</iso639Id> + <iso639Id>pyu</iso639Id> + <iso639Id>dru</iso639Id> + <iso639Id>ais</iso639Id> + <iso639Id>ssf</iso639Id> + <iso639Id>tao</iso639Id> + <iso639Id>tsu</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>saisiyat</name> + <_description>Taiwan - Saisiyat</_description> + <languageList> + <iso639Id>xsf</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ua</name> + <_shortDescription>Ukr</_shortDescription> + <_description>Ukraine</_description> + <languageList> + <iso639Id>ukr</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>phonetic</name> + <_description>Ukraine - Phonetic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>typewriter</name> + <_description>Ukraine - Typewriter</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>winkeys</name> + <_description>Ukraine - Winkeys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>legacy</name> + <_description>Ukraine - Legacy</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu</name> + <_description>Ukraine - Standard RSTU</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>rstu_ru</name> + <_description>Ukraine - Standard RSTU on Russian layout</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>homophonic</name> + <_description>Ukraine - Homophonic</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh</name> + <_description>Ukraine - Crimean Tatar (Turkish Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <_description>Ukraine - Crimean Tatar (Turkish F)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <_description>Ukraine - Crimean Tatar (Turkish Alt-Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>gb</name> + <_shortDescription>GBr</_shortDescription> + <_description>United Kingdom</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>extd</name> + <_description>United Kingdom - Extended - Winkeys</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>intl</name> + <_description>United Kingdom - International (with dead keys)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>United Kingdom - Dvorak</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorakukp</name> + <_description>United Kingdom - Dvorak (UK Punctuation)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac</name> + <_description>United Kingdom - Macintosh</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>mac_intl</name> + <_description>United Kingdom - Macintosh (International)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <_description>United Kingdom - Colemak</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>uz</name> + <_shortDescription>Uzb</_shortDescription> + <_description>Uzbekistan</_description> + <languageList> + <iso639Id>uzb</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>latin</name> + <_description>Uzbekistan - Latin</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>crh</name> + <_description>Uzbekistan - Crimean Tatar (Turkish Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_f</name> + <_description>Uzbekistan - Crimean Tatar (Turkish F)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>crh_alt</name> + <_description>Uzbekistan - Crimean Tatar (Turkish Alt-Q)</_description> + <languageList> + <iso639Id>crh</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>vn</name> + <_shortDescription>Vnm</_shortDescription> + <_description>Vietnam</_description> + <languageList> + <iso639Id>vie</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>kr</name> + <_shortDescription>Kor</_shortDescription> + <_description>Korea, Republic of</_description> + <languageList> + <iso639Id>kor</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kr104</name> + <_description>Korea, Republic of - 101/104 key Compatible</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>nec_vndr/jp</name> + <_shortDescription>Jpn</_shortDescription> + <_description>Japan (PC-98xx Series)</_description> + <countryList> + <iso3166Id>JP</iso3166Id> + </countryList> + <languageList> + <iso639Id>jpn</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>ie</name> + <_shortDescription>Irl</_shortDescription> + <_description>Ireland</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>CloGaelach</name> + <_description>Ireland - CloGaelach</_description> + <languageList> + <iso639Id>gla</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>UnicodeExpert</name> + <_description>Ireland - UnicodeExpert</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam</name> + <_description>Ireland - Ogham</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>ogam_is434</name> + <_description>Ireland - Ogham IS434</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>pk</name> + <_shortDescription>Pak</_shortDescription> + <_description>Pakistan</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>urd-crulp</name> + <_description>Pakistan - CRULP</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>urd-nla</name> + <_description>Pakistan - NLA</_description> + <languageList> + <iso639Id>urd</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>ara</name> + <_description>Pakistan - Arabic</_description> + <languageList> + <iso639Id>ara</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>snd</name> + <_description>Pakistan - Sindhi</_description> + <languageList> + <iso639Id>sd</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>mv</name> + <_shortDescription>Mdv</_shortDescription> + <_description>Maldives</_description> + <languageList> + <iso639Id>div</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>za</name> + <_shortDescription>Zaf</_shortDescription> + <_description>South Africa</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>epo</name> + <_shortDescription>Epo</_shortDescription> + <_description>Esperanto</_description> + <languageList> + <iso639Id>epo</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>legacy</name> + <_description>Esperanto - displaced semicolon and quote (obsolete)</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>np</name> + <_shortDescription>Npl</_shortDescription> + <_description>Nepal</_description> + <languageList> + <iso639Id>nep</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ng</name> + <_shortDescription>Nga</_shortDescription> + <_description>Nigeria</_description> + <languageList> + <iso639Id>eng</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>igbo</name> + <_description>Nigeria - Igbo</_description> + <languageList> + <iso639Id>ibo</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>yoruba</name> + <_description>Nigeria - Yoruba</_description> + <languageList> + <iso639Id>yor</iso639Id> + </languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>hausa</name> + <_description>Nigeria - Hausa</_description> + <languageList> + <iso639Id>hau</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>et</name> + <_shortDescription>Eth</_shortDescription> + <_description>Ethiopia</_description> + <languageList> + <iso639Id>amh</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>sn</name> + <_shortDescription>Sen</_shortDescription> + <_description>Senegal</_description> + <languageList> + <iso639Id>wol</iso639Id> + </languageList> + </configItem> + <variantList/> + </layout> + <layout> + <configItem> + <name>brai</name> + <_shortDescription>Brl</_shortDescription> + <_description>Braille</_description> + </configItem> + <variantList> + <variant> + <configItem> + <name>left_hand</name> + <_description>Braille - Left hand</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>right_hand</name> + <_description>Braille - Right hand</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tm</name> + <_shortDescription>Tkm</_shortDescription> + <_description>Turkmenistan</_description> + <languageList> + <iso639Id>tuk</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>alt</name> + <_description>Turkmenistan - Alt-Q</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>ml</name> + <_shortDescription>Mli</_shortDescription> + <_description>Mali</_description> + <languageList> + <iso639Id>bam</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>fr-oss</name> + <_description>Mali - Français (France Alternative)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us-mac</name> + <_description>Mali - English (USA Macintosh)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>us-intl</name> + <_description>Mali - English (USA International)</_description> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>tz</name> + <_shortDescription>Tza</_shortDescription> + <_description>Tanzania</_description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ke</name> + <_shortDescription>Ken</_shortDescription> + <_description>Kenya</_description> + <languageList> + <iso639Id>swa</iso639Id> + </languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>kik</name> + <_description>Kenya - Kikuyu</_description> + <languageList> + <iso639Id>kik</iso639Id> + </languageList> + </configItem> + </variant> + </variantList> + </layout> + <layout> + <configItem> + <name>bw</name> + <_shortDescription>Bwa</_shortDescription> + <_description>Botswana</_description> + <languageList> + <iso639Id>tsn</iso639Id> + </languageList> + </configItem> + </layout> + <layout> + <configItem> + <name>ph</name> + <_shortDescription>Phi</_shortDescription> + <_description>Philippines</_description> + <languageList><iso639Id>eng</iso639Id> + <iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + <variantList> + <variant> + <configItem> + <name>qwerty-bay</name> + <_description>Philippines - QWERTY (Baybayin)</_description> + <languageList><iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak</name> + <_description>Philippines - Capewell-Dvorak (Latin)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-dvorak-bay</name> + <_description>Philippines - Capewell-Dvorak (Baybayin)</_description> + <languageList><iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6</name> + <_description>Philippines - Capewell-QWERF 2006 (Latin)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>capewell-qwerf2k6-bay</name> + <_description>Philippines - Capewell-QWERF 2006 (Baybayin)</_description> + <languageList><iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak</name> + <_description>Philippines - Colemak (Latin)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>colemak-bay</name> + <_description>Philippines - Colemak (Baybayin)</_description> + <languageList><iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak</name> + <_description>Philippines - Dvorak (Latin)</_description> + </configItem> + </variant> + <variant> + <configItem> + <name>dvorak-bay</name> + <_description>Philippines - Dvorak (Baybayin)</_description> + <languageList><iso639Id>bik</iso639Id> + <iso639Id>ceb</iso639Id> + <iso639Id>fil</iso639Id> + <iso639Id>hil</iso639Id> + <iso639Id>ilo</iso639Id> + <iso639Id>pam</iso639Id> + <iso639Id>pag</iso639Id> + <iso639Id>phi</iso639Id> + <iso639Id>tgl</iso639Id> + <iso639Id>war</iso639Id></languageList> + </configItem> + </variant> + </variantList> + </layout> + </layoutList> + <optionList> + <group allowMultipleSelection="true"> + <!-- The key combination used to switch between groups --> + <configItem> + <name>grp</name> + <_description>Key(s) to change layout</_description> + </configItem> + <option> + <configItem> + <name>grp:switch</name> + <_description>Right Alt (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lswitch</name> + <_description>Left Alt (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_switch</name> + <_description>Left Win (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_switch</name> + <_description>Right Win (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_switch</name> + <_description>Any Win key (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_switch</name> + <_description>Caps Lock (while pressed), Alt+Caps Lock does the original capslock action</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_switch</name> + <_description>Right Ctrl (while pressed)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:toggle</name> + <_description>Right Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lalt_toggle</name> + <_description>Left Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:caps_toggle</name> + <_description>Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_toggle</name> + <_description>Shift+Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shift_caps_switch</name> + <_description>Caps Lock (to first layout), Shift+Caps Lock (to last layout)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:win_menu_switch</name> + <_description>Left Win (to first layout), Right Win/Menu (to last layout)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_rctrl_switch</name> + <_description>Left Ctrl (to first layout), Right Ctrl (to last layout)</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_caps_toggle</name> + <_description>Alt+Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:shifts_toggle</name> + <_description>Both Shift keys together</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alts_toggle</name> + <_description>Both Alt keys together</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrls_toggle</name> + <_description>Both Ctrl keys together</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_shift_toggle</name> + <_description>Ctrl+Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lshift_toggle</name> + <_description>Left Ctrl+Left Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_rshift_toggle</name> + <_description>Right Ctrl+Right Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:ctrl_alt_toggle</name> + <_description>Alt+Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_shift_toggle</name> + <_description>Alt+Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:alt_space_toggle</name> + <_description>Alt+Space</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:menu_toggle</name> + <_description>Menu</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lwin_toggle</name> + <_description>Left Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rwin_toggle</name> + <_description>Right Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lshift_toggle</name> + <_description>Left Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rshift_toggle</name> + <_description>Right Shift</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_toggle</name> + <_description>Left Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:rctrl_toggle</name> + <_description>Right Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:sclk_toggle</name> + <_description>Scroll Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp:lctrl_lwin_rctrl_menu</name> + <_description>LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- The key combination used to choose the 3rd (and 4th, together with Shift) + level of symbols --> + <configItem> + <name>lv3</name> + <_description>Key to choose 3rd level</_description> + </configItem> + <option> + <configItem> + <name>lv3:switch</name> + <_description>Right Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:menu_switch</name> + <_description>Menu</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:win_switch</name> + <_description>Any Win key</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lwin_switch</name> + <_description>Left Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:rwin_switch</name> + <_description>Right Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:alt_switch</name> + <_description>Any Alt key</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lalt_switch</name> + <_description>Left Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch</name> + <_description>Right Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_switch_multikey</name> + <_description>Right Alt, Shift+Right Alt key is Multi_Key</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:ralt_alt</name> + <_description>Right Alt key never chooses 3rd level</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:enter_switch</name> + <_description>Enter on keypad</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch</name> + <_description>Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch</name> + <_description>Backslash</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch</name> + <_description><Less/Greater></_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:caps_switch_latch</name> + <_description>Caps Lock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:bksl_switch_latch</name> + <_description>Backslash chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv3:lsgt_switch_latch</name> + <_description><Less/Greater> (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Ctrl" key --> + <configItem> + <name>ctrl</name> + <_description>Ctrl key position</_description> + </configItem> + <option> + <configItem> + <name>ctrl:nocaps</name> + <_description>Make Caps Lock an additional Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:lctrl_meta</name> + <_description>Meta on Left Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:swapcaps</name> + <_description>Swap Ctrl and Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ctrl_ac</name> + <_description>At left of 'A'</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ctrl_aa</name> + <_description>At bottom left</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ctrl_ra</name> + <_description>Right Ctrl as Right Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>ctrl:ctrl_menu</name> + <_description>Right Ctrl is mapped to Menu</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Using startard LEDs to indicate the alternative (not first) group(s) --> + <configItem> + <name>grp_led</name> + <_description>Use keyboard LED to show alternative layout</_description> + </configItem> + <option> + <configItem> + <name>grp_led:num</name> + <_description>Num Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:caps</name> + <_description>Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>grp_led:scroll</name> + <_description>Scroll Lock</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Select a keypad type --> + <configItem> + <name>keypad</name> + <_description>Numeric keypad layout selection</_description> + </configItem> + <option> + <configItem> + <name>keypad:legacy</name> + <_description>Legacy</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss</name> + <_description>Unicode additions (arrows and math operators)</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future</name> + <_description>Unicode additions (arrows and math operators). Math operators on default level</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:legacy_wang</name> + <_description>Legacy Wang 724</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:oss_wang</name> + <_description>Wang 724 keypad with unicode additions (arrows and math operators)</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:future_wang</name> + <_description>Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:hex</name> + <_description>Hexadecimal</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:atm</name> + <_description>ATM/phone-style</_description> + </configItem> + </option> + </group> + <!-- This option should override the KPDL key defined in keypad; I hope it's declared in the right place --> + <group allowMultipleSelection="false"> + <!-- Select a keypad KPDL variant --> + <configItem> + <name>kpdl</name> + <_description>Numeric keypad delete key behaviour</_description> + </configItem> + <option> + <configItem> + <!-- Actually, with KP_DECIMAL, as the old keypad(dot) --> + <name>kpdl:dot</name> + <_description>Legacy key with dot</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:comma</name> + <!-- Actually, with KP_SEPARATOR, as the old keypad(comma) --> + <_description>Legacy key with comma</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss</name> + <_description>Four-level key with dot</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:dotoss_latin9</name> + <_description>Four-level key with dot, latin-9 restriction</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:commaoss</name> + <_description>Four-level key with comma</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:momayyezoss</name> + <_description>Four-level key with momayyez</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:kposs</name> + <!-- This assumes the KP_ abstract symbols are actually useful for some apps + The description needs to be rewritten --> + <_description>Four-level key with abstract separators</_description> + </configItem> + </option> + <option> + <configItem> + <name>kpdl:semi</name> + <_description>Semi-colon on third level</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Caps Lock tweaks. + "Internal" capitalization means capitalization using some internal tables. + Otherwise "as Shift" - means using next group. --> + <configItem> + <name>caps</name> + <_description>Caps Lock key behavior</_description> + </configItem> + <option> + <configItem> + <name>caps:internal</name> + <_description>Caps Lock uses internal capitalization. Shift "pauses" Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:internal_nocancel</name> + <_description>Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift</name> + <_description>Caps Lock acts as Shift with locking. Shift "pauses" Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shift_nocancel</name> + <_description>Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:capslock</name> + <_description>Caps Lock toggles normal capitalization of alphabetic characters</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:numlock</name> + <_description>Make Caps Lock an additional Num Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:swapescape</name> + <_description>Swap ESC and Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:escape</name> + <_description>Make Caps Lock an additional ESC</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:backspace</name> + <_description>Make Caps Lock an additional Backspace</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:super</name> + <_description>Make Caps Lock an additional Super</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:hyper</name> + <_description>Make Caps Lock an additional Hyper</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:shiftlock</name> + <_description>Caps Lock toggles Shift so all keys are affected</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:none</name> + <_description>Caps Lock is disabled</_description> + </configItem> + </option> + <option> + <configItem> + <name>caps:ctrl_modifier</name> + <_description>Make Caps Lock an additional Control but keep the Caps_Lock keysym</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Using special PC keys (Win, Menu) to work as standard X keys (Super, Hyper, etc.) --> + <configItem> + <name>altwin</name> + <_description>Alt/Win key behavior</_description> + </configItem> + <option> + <configItem> + <name>altwin:menu</name> + <_description>Add the standard behavior to Menu key</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_alt</name> + <_description>Alt and Meta are on Alt keys</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_win</name> + <_description>Control is mapped to Win keys (and the usual Ctrl keys)</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:ctrl_alt_win</name> + <_description>Control is mapped to Alt keys, Alt is mapped to Win keys</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:meta_win</name> + <_description>Meta is mapped to Win keys</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:left_meta_win</name> + <_description>Meta is mapped to Left Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:hyper_win</name> + <_description>Hyper is mapped to Win-keys</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:alt_super_win</name> + <_description>Alt is mapped to Right Win, Super to Menu</_description> + </configItem> + </option> + <option> + <configItem> + <name>altwin:swap_lalt_lwin</name> + <_description>Left Alt is swapped with Left Win</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Tweaking the position of the "Compose" key: mapping to existing PC keys --> + <configItem> + <name>Compose key</name> + <_description>Compose key position</_description> + </configItem> + <option> + <configItem> + <name>compose:ralt</name> + <_description>Right Alt</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lwin</name> + <_description>Left Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rwin</name> + <_description>Right Win</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:menu</name> + <_description>Menu</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:lctrl</name> + <_description>Left Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:rctrl</name> + <_description>Right Ctrl</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:caps</name> + <_description>Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:102</name> + <_description><Less/Greater></_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:paus</name> + <_description>Pause</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:prsc</name> + <_description>PrtSc</_description> + </configItem> + </option> + <option> + <configItem> + <name>compose:sclk</name> + <_description>Scroll Lock</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>compat</name> + <_description>Miscellaneous compatibility options</_description> + </configItem> + <option> + <configItem> + <name>numpad:pc</name> + <_description>Default numeric keypad keys</_description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:mac</name> + <_description>Numeric keypad keys work as with Mac</_description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:microsoft</name> + <_description>Shift with numeric keypad keys works as in MS Windows</_description> + </configItem> + </option> + <option> + <configItem> + <name>numpad:shift3</name> + <_description>Shift does not cancel Num Lock, chooses 3rd level instead</_description> + </configItem> + </option> + <option> + <configItem> + <name>srvrkeys:none</name> + <_description>Special keys (Ctrl+Alt+<key>) handled in a server</_description> + </configItem> + </option> + <option> + <configItem> + <name>apple:alupckeys</name> + <_description>Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)</_description> + </configItem> + </option> + <option> + <configItem> + <name>shift:breaks_caps</name> + <_description>Shift cancels Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>misc:typo</name> + <_description>Enable extra typographic characters</_description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock</name> + <_description>Both Shift-Keys together toggle Caps Lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_capslock_cancel</name> + <_description>Both Shift-Keys together activate Caps Lock, one Shift-Key deactivates</_description> + </configItem> + </option> + <option> + <configItem> + <name>shift:both_shiftlock</name> + <_description>Both Shift-Keys together toggle ShiftLock</_description> + </configItem> + </option> + <option> + <configItem> + <name>keypad:pointerkeys</name> + <_description>Toggle PointerKeys with Shift + NumLock.</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <!-- Special shortcuts for the Euro character --> + <configItem> + <name>eurosign</name> + <_description>Adding currency signs to certain keys</_description> + </configItem> + <option> + <configItem> + <name>eurosign:e</name> + <_description>Euro on E</_description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:2</name> + <_description>Euro on 2</_description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:4</name> + <_description>Euro on 4</_description> + </configItem> + </option> + <option> + <configItem> + <name>eurosign:5</name> + <_description>Euro on 5</_description> + </configItem> + </option> + <option> + <configItem> + <name>rupeesign:4</name> + <_description>Rupee on 4</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>lv5</name> + <_description>Key to choose 5th level</_description> + </configItem> + <option> + <configItem> + <name>lv5:lsgt_switch_lock</name> + <_description><Less/Greater> chooses 5th level, locks when pressed together with another 5th-level-chooser</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock</name> + <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock</name> + <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock</name> + <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <_description><Less/Greater> chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <_description>Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lwin_switch_lock_cancel</name> + <_description>Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:rwin_switch_lock_cancel</name> + <_description>Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:lsgt_switch_lock_cancel</name> + <_description><Less/Greater> chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + <option> + <configItem> + <name>lv5:ralt_switch_lock_cancel</name> + <_description>Right Alt chooses 5th level and activates level5-Lock when pressed together with another 5th-level-chooser, one press releases the lock</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <!-- Let space output NBSP, NNBSP, ZWNJ, and ZWJ for the desired level --> + <configItem> + <name>nbsp</name> + <_description>Using space key to input non-breakable space character</_description> + </configItem> + <option> + <configItem> + <name>nbsp:none</name> + <_description>Usual space at any level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level2</name> + <_description>Non-breakable space character at second level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3</name> + <_description>Non-breakable space character at third level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3s</name> + <_description>Non-breakable space character at third level, nothing at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level3n</name> + <_description>Non-breakable space character at third level, thin non-breakable space character at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4</name> + <_description>Non-breakable space character at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4n</name> + <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:level4nl</name> + <_description>Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2</name> + <_description>Zero-width non-joiner character at second level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3</name> + <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2zwj3nb4</name> + <_description>Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3</name> + <_description>Zero-width non-joiner character at second level, non-breakable space character at third level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3s</name> + <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3zwj4</name> + <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj2nb3nnb4</name> + <_description>Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level</_description> + </configItem> + </option> + <option> + <configItem> + <name>nbsp:zwnj3zwj4</name> + <_description>Zero-width non-joiner character at third level, zero-width joiner at fourth level</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>japan</name> + <_description>Japanese keyboard options</_description> + </configItem> + <option> + <configItem> + <name>japan:kana_lock</name> + <_description>Kana Lock key is locking</_description> + </configItem> + </option> + <option> + <configItem> + <name>japan:nicola_f_bs</name> + <_description>NICOLA-F style Backspace</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="false"> + <configItem> + <name>esperanto</name> + <_description>Adding Esperanto circumflexes (supersigno)</_description> + </configItem> + <option> + <configItem> + <name>esperanto:qwerty</name> + <_description>To the corresponding key in a Qwerty keyboard.</_description> + </configItem> + </option> + <option> + <configItem> + <name>esperanto:dvorak</name> + <_description>To the corresponding key in a Dvorak keyboard.</_description> + </configItem> + </option> + </group> + <group allowMultipleSelection="true"> + <configItem> + <name>terminate</name> + <_description>Key sequence to kill the X server</_description> + </configItem> + <option> + <configItem> + <name>terminate:ctrl_alt_bksp</name> + <_description>Control + Alt + Backspace</_description> + </configItem> + </option> + </group> + </optionList> +</xkbConfigRegistry> diff --git a/xorg-server/xkeyboard-config/symbols/in b/xorg-server/xkeyboard-config/symbols/in index 5d4dc27b2..cb38a84c0 100644 --- a/xorg-server/xkeyboard-config/symbols/in +++ b/xorg-server/xkeyboard-config/symbols/in @@ -1,1340 +1,1423 @@ -// This layout includes all Indian layouts, including:
-// - Bengali
-// - Gujarati
-// - Kannada
-// - Malayalam
-// - Oriya
-// - Tamil
-// - Telugu
-// - Urdu
-
-// Links:
-// - Indic INSCRIPT keyboard layout diagrams:
-// http://java.sun.com/products/jfc/tsc/articles/InputMethod/indiclayout.html
-// - Ekusheyr Shadhinota (Bengali layouts):
-// http://ekushey.org/projects/shadhinota/index.html
-// - Microsoft Windows XP SP2: Indic Language Standards - an Introduction:
-// http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx
-
-// based on a keyboard map from an 'xkb/symbols/dev' file
-
-// Devangari is the default. Kill me if I am wrong:)
-default partial alphanumeric_keys
-xkb_symbols "deva" {
- // March 2004 -- David Holl <smyrph+dev_xkb@ece.wpi.edu>
- name[Group1]="India";
-
- key.type="FOUR_LEVEL";
-
- key <TLDE> { [ U094a, U0912, grave, asciitilde ] };
- key <AE01> { [ U0967, U090d, 1, exclam ] };
- key <AE02> { [ U0968, U0945, 2, at ] };
- // Shift+AE0[3-8] really need to return a macro of keys defined by
- // INSCRIPT in place of the symbols that are here for now. But this
- // requires XKB to map 1 key into two to three other key presses.
- key <AE03> { [ U0969, numbersign, 3, numbersign ] };
- key <AE04> { [ U096a, dollar, 4, dollar ] };
- key <AE05> { [ U096b, percent, 5, percent ] };
- key <AE06> { [ U096c, asciicircum, 6, asciicircum ] };
- key <AE07> { [ U096d, ampersand, 7, ampersand ] };
- key <AE08> { [ U096e, asterisk, 8, asterisk ] };
- key <AE09> { [ U096f, parenleft, 9, parenleft ] };
- key <AE10> { [ U0966, parenright, 0, parenright ] };
- key <AE11> { [ minus, U0903, minus, underscore ] };
- key <AE12> { [ U0943, U090b, U0944, U0960 ] };
-
- key <AD01> { [ U094c, U0914 ] };
- key <AD02> { [ U0948, U0910 ] };
- key <AD03> { [ U093e, U0906 ] };
- key <AD04> { [ U0940, U0908, U0963, U0961 ] };
- key <AD05> { [ U0942, U090a ] };
- key <AD06> { [ U092c, U092d ] };
- key <AD07> { [ U0939, U0919 ] };
- key <AD08> { [ U0917, U0918, U095a ] };
- key <AD09> { [ U0926, U0927 ] };
- key <AD10> { [ U091c, U091d, U095b ] };
- key <AD11> { [ U0921, U0922, U095c, U095d ] };
- key <AD12> { [ U093c, U091e ] };
- // I added \ / ? | for shell-convenience (file names and piping)
- key <BKSL> { [ U0949, U0911, U005C, U007C ] };
-
- key <AC01> { [ U094b, U0913 ] };
- key <AC02> { [ U0947, U090f ] };
- key <AC03> { [ U094d, U0905 ] };
- key <AC04> { [ U093f, U0907, U0962, U090c ] };
- key <AC05> { [ U0941, U0909 ] };
- key <AC06> { [ U092a, U092b, NoSymbol, U095e ] };
- key <AC07> { [ U0930, U0931 ] };
- key <AC08> { [ U0915, U0916, U0958, U0959 ] };
- key <AC09> { [ U0924, U0925 ] };
- key <AC10> { [ U091a, U091b, U0952 ] };
- key <AC11> { [ U091f, U0920, NoSymbol, U0951 ] };
-
- key <AB01> { [ U0946, U090e, U0953 ] };
- key <AB02> { [ U0902, U0901, NoSymbol, U0950 ] };
- key <AB03> { [ U092e, U0923, U0954 ] };
- key <AB04> { [ U0928, U0929 ] };
- key <AB05> { [ U0935, U0934 ] };
- key <AB06> { [ U0932, U0933 ] };
- key <AB07> { [ U0938, U0936 ] };
- key <AB08> { [ comma, U0937, U0970 ] };
- key <AB09> { [ period, U0964, U0965, U093d ] };
- // I added \ / ? | for shell-convenience (file names and piping)
- key <AB10> { [ U092f, U095f, slash, question ] };
-
- // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ):
- include "nbsp(zwnj3zwj4)"
-};
-
-//Name : Bolnagri (Combined)
-//Description : A phonetic keyboard layout for Devnagari(Hindi)
-// http://www.indlinux.org/wiki/index.php/BolNagri
-//NOTE : This is a combined map of bolnagri_matras and bolnagri_vowels.
-//Inspired by "devrom" keymap by Steve Smith for the windows tool "keyman"
-//Original Author : Noah Levitt<nlevitt at columbia.edu>
-//Past Authors : Pramod.R <pramodr at gmail.com> and Ravikant <ravikant at sarai.net>
-// Current Main.: G Karunakar <karunakar@sarai.net>
-
-partial alphanumeric_keys
-xkb_symbols "bolnagri" {
- name[Group1] = "India - Hindi Bolnagri";
- key.type="FOUR_LEVEL";
- //Top Alphanumeric row
- // Roman digits
- key <TLDE> { [ U0902, U0901, apostrophe, asciitilde ] }; // apostrophe: anusvara, candrabindu
- key <AE01> { [ 1, exclam, U0967, exclam ] };
- key <AE02> { [ 2, at, U0968, at ] };
- key <AE03> { [ 3, numbersign, U0969, numbersign ] };
- key <AE04> { [ 4, dollar, U096A, dollar ] };
- key <AE05> { [ 5, percent, U096B, percent ] };
- key <AE06> { [ 6, asciicircum, U096C, asciicircum ] };
- key <AE07> { [ 7, ampersand, U096D, ampersand ] };
- key <AE08> { [ 8, asterisk, U096E, asterisk ] };
- key <AE09> { [ 9, parenleft, U096F, parenleft ] };
- key <AE10> { [ 0, parenright, U0966, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ U0964, U0965, U007C, U005C ] }; //pipe : danda, double danda
-
- //Q Row
- key <AD01> { [ U200C, U200D ] }; // Q: ZWNJ, ZWJ
- key <AD02> { [ U0935, U950 ] }; // W: wa, OM
- key <AD03> { [ U0947, U0948, U090F, U0910 ] }; // E: e, ai matras
- key <AD04> { [ U0930, U0943 ] }; // R: ra, vocalic Ri
- key <AD05> { [ U0924, U0925 ] }; // T: ta, tha
- key <AD06> { [ U092f, U091E ] }; // Y: ya, nya
- key <AD07> { [ U0941, U0942, U0909, U090A ] }; // U: u, uu matras
- key <AD08> { [ U093F, U0940, U0907, U0908 ] }; // I: i, ii matras
- key <AD09> { [ U094B, U094C, U0913, U0914 ] }; // O: o, au matras
- key <AD10> { [ U092A, U092B ] }; // P: pa, pha
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
-
- //A Row
- key <AC01> { [ U093E, U0906, U0905, U0906 ] }; // A: aa
- key <AC02> { [ U0938, U0937 ] }; // S: sa, ssa
- key <AC03> { [ U0926, U0927 ] }; // D: da, dha
- key <AC04> { [ U091F, U0920 ] }; // F: TA, THA
- key <AC05> { [ U0917, U0918 ] }; // G: ga, gha
- key <AC06> { [ U0939, U0903 ] }; // H: ha, visarg
- key <AC07> { [ U091C, U091D ] }; // J: ja, jha
- key <AC08> { [ U0915, U0916 ] }; // K: ka, kha
- key <AC09> { [ U0932, U0962 ] }; // L: la, vocalic L or lru matra`
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [apostrophe, quotedbl ] };
-
- //Z Row
- key <AB01> { [ U0936, U0945 ] }; // Z: sha, akaar candra
- key <AB02> { [ U094D, U0949 ] }; // X: halant, aakaar candra
- key <AB03> { [ U091A, U091B ] }; // C: ca, cha
- key <AB04> { [ U0921, U0922 ] }; // V: da, dha
- key <AB05> { [ U092C, U092D ] }; // B: ba, bha
- key <AB06> { [ U0928, U0923 ] }; // N: na, nha
- key <AB07> { [ U092E, U093D, U092E, U093D ] }; // M: ma, avagraha
- key <AB08> { [ comma, U0970 ] };// comma: comma, dev abbreviation sign
- key <AB09> { [ period, U093C ] }; // period: period, nukta
- key <AB10> { [ slash, question ] };
-
- // begin modifier mappings
-// modifier_map Shift { Shift_L };
-// modifier_map Lock { Caps_Lock };
-// modifier_map Control{ Control_L };
-// modifier_map Mod3 { Mode_switch };
- include "level3(ralt_switch)"
-};
-
-// based on a keyboard map from an 'xkb/symbols/ben' file
-
-partial alphanumeric_keys
-xkb_symbols "ben" {
- name[Group1]= "India - Bengali";
-
- // Mainly numbers.
- key <AE01> { [ U09E7 ] };
- key <AE02> { [ U09E8 ] };
- key <AE03> { [ U09E9 ] };
- key <AE04> { [ U09EA ] };
- key <AE05> { [ U09EB ] };
- key <AE06> { [ U09EC ] };
- key <AE07> { [ U09ED ] };
- key <AE08> { [ U09EE ] };
- key <AE09> { [ U09EF, parenleft ] };
- key <AE10> { [ U09E6, parenright ] };
- key <AE11> { [ minus, U0983 ] };
- key <AE12> { [ U098B, U09C3 ] };
-
-// Mainly long vowels
-
- key <AD01> { [ U09CC, U0994 ] };
- key <AD02> { [ U09C8, U0990 ] };
- key <AD03> { [ U09BE, U0986 ] };
- key <AD04> { [ U09C0, U0988 ] };
- key <AD05> { [ U09C2, U098A ] };
-
-// Mainly voiced consonants
-
- key <AD06> { [ U09AC, U09AD ] };
- key <AD07> { [ U09B9, U0999 ] };
- key <AD08> { [ U0997, U0998 ] };
- key <AD09> { [ U09A6, U09A7 ] };
- key <AD10> { [ U099C, U099D ] };
- key <AD11> { [ U09A1, U09A2 ] };
- key <AD12> { [ U09BC, U099E ] };
-
-// Mainly short vowels
- key <AC01> { [ U09CB, U0993 ] };
- key <AC02> { [ U09C7, U098F ] };
- key <AC03> { [ U09CD, U0985 ] };
- key <AC04> { [ U09BF, U0987 ] };
- key <AC05> { [ U09C1, U0989 ] };
-
-
-// Mainly unvoiced consonants
-
- key <AC06> { [ U09AA, U09AB ] };
- key <AC07> { [ U09B0, U09DD ] };
- key <AC08> { [ U0995, U0996 ] };
- key <AC09> { [ U09A4, U09A5 ] };
- key <AC10> { [ U099A, U099B ] };
- key <AC11> { [ U099F, U09A0 ] };
- key <BKSL> { [ U005C, U007C ] };
-
- key <AB01> { [ z, Z ] };
- key <AB02> { [ U0982, U0981 ] };
- key <AB03> { [ U09AE, U09A3 ] };
- key <AB04> { [ U09A8, U09A8 ] };
- key <AB05> { [ U09AC, U09AC ] };
- key <AB06> { [ U09B2, U09B2 ] };
- key <AB07> { [ U09B8, U09B6 ] };
- key <AB08> { [ comma, U09B7 ] };
- key <AB09> { [ period, U0964 ] };
- key <AB10> { [ U09DF, U09AF ] };
-};
-
-xkb_symbols "ben_probhat" {
- name[Group1]= "India - Bengali Probhat";
- key <ESC> { [ Escape ] };
-
-// numbers
- key <TLDE> { [ U200D, asciitilde ] };
- key <AE01> { [ U09E7, exclam ] };
- key <AE02> { [ U09E8, at ] };
- key <AE03> { [ U09E9, numbersign ] };
- key <AE04> { [ U09EA, U09F3 ] };
- key <AE05> { [ U09EB, percent ] };
- key <AE06> { [ U09EC, asciicircum ] };
- key <AE07> { [ U09ED, U099E ] };
- key <AE08> { [ U09EE, U09CE ] };
- key <AE09> { [ U09EF, parenleft ] };
- key <AE10> { [ U09E6, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSP> { [ BackSpace ] };
-
-// tab, q to ]
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ U09A6, U09A7 ] };
- key <AD02> { [ U09C2, U098A ] };
- key <AD03> { [ U09C0, U0988 ] };
- key <AD04> { [ U09B0, U09DC ] };
- key <AD05> { [ U099F, U09A0 ] };
- key <AD06> { [ U098F, U0990 ] };
- key <AD07> { [ U09C1, U0989 ] };
- key <AD08> { [ U09BF, U0987 ] };
- key <AD09> { [ U0993, U0994 ] };
- key <AD10> { [ U09AA, U09AB ] };
- key <AD11> { [ U09C7, U09C8 ] };
- key <AD12> { [ U09CB, U09CC ] };
- key <RTRN> { [ Return ] };
-
-// caps, a to '
-// key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ U09BE, U0985 ] };
- key <AC02> { [ U09B8, U09B7 ] };
- key <AC03> { [ U09A1, U09A2 ] };
- key <AC04> { [ U09A4, U09A5 ] };
- key <AC05> { [ U0997, U0998 ] };
- key <AC06> { [ U09B9, U0983 ] };
- key <AC07> { [ U099C, U099D ] };
- key <AC08> { [ U0995, U0996 ] };
- key <AC09> { [ U09B2, U0982 ] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
-
-// shift, z to /
-// key <LFSH> { [ Shift_L ] };
- key <AB01> { [ U09DF, U09AF ] };
- key <AB02> { [ U09B6, U09DD ] };
- key <AB03> { [ U099A, U099B ] };
- key <AB04> { [ U0986, U098B ] };
- key <AB05> { [ U09AC, U09AD ] };
- key <AB06> { [ U09A8, U09A3 ] };
- key <AB07> { [ U09AE, U0999 ] };
- key <AB08> { [ comma, U09C3 ] };
- key <AB09> { [ U0964, U0981 ] };
- key <AB10> { [ U09CD, question ] };
- key <BKSL> { [ U200C, U0965 ] };
-
-// key <LCTL> { [ Control_L ] };
-// key <SPCE> { [ space ] };
-
-// modifier_map Shift { Shift_L };
-// modifier_map Lock { Caps_Lock };
-// modifier_map Control{ Control_L };
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "guj" {
- name[Group1]= "India - Gujarati";
-
- // Mainly numbers.
- key <AE01> { [ U0AE7, U0A8D ] };
- key <AE02> { [ U0AE8, U0AC5 ] };
- key <AE03> { [ U0AE9 ] };
- key <AE04> { [ U0AEA ] };
- key <AE05> { [ U0AEB ] };
- key <AE06> { [ U0AEC ] };
- key <AE07> { [ U0AED ] };
- key <AE08> { [ U0AEE ] };
- key <AE09> { [ U0AEF, parenleft ] };
- key <AE10> { [ U0AE6, parenright ] };
- key <AE11> { [ minus, U0A83 ] };
- key <AE12> { [ U0A8B, U0AC3 ] };
-
-// Mainly long vowels
-
- key <AD01> { [ U0ACC, U0A94 ] };
- key <AD02> { [ U0AC8, U0A90 ] };
- key <AD03> { [ U0ABE, U0A86 ] };
- key <AD04> { [ U0AC0, U0A88 ] };
- key <AD05> { [ U0AC2, U0A8A ] };
-
-// Mainly voiced consonants
-
- key <AD06> { [ U0AAC, U0AAD ] };
- key <AD07> { [ U0AB9, U0A99 ] };
- key <AD08> { [ U0A97, U0A98 ] };
- key <AD09> { [ U0AA6, U0AA7 ] };
- key <AD10> { [ U0A9C, U0A9D ] };
- key <AD11> { [ U0AA1, U0AA2 ] };
- key <AD12> { [ U0ABC, U0A9E ] };
-
-// Mainly short vowels
- key <AC01> { [ U0ACB, U0A93 ] };
- key <AC02> { [ U0AC7, U0A8F ] };
- key <AC03> { [ U0ACD, U0A85 ] };
- key <AC04> { [ U0ABF, U0A87 ] };
- key <AC05> { [ U0AC1, U0A89 ] };
-
-// Mainly unvoiced consonants
-
- key <AC06> { [ U0AAA, U0AAB ] };
- key <AC07> { [ U0AB0, U0AB0 ] };
- key <AC08> { [ U0A95, U0A96 ] };
- key <AC09> { [ U0AA4, U0AA5 ] };
- key <AC10> { [ U0A9A, U0A9B ] };
- key <AC11> { [ U0A9F, U0AA0 ] };
- key <BKSL> { [ U0AC9, U0A91 ] };
-
- key <AB01> { [ z , Z ] };
- key <AB02> { [ U0A82, U0A81 ] };
- key <AB03> { [ U0AAE, U0AA3 ] };
- key <AB04> { [ U0AA8, U0AA8 ] };
- key <AB05> { [ U0AB5, U0AB5 ] };
- key <AB06> { [ U0AB2, U0AB3 ] };
- key <AB07> { [ U0AB8, U0AB6 ] };
- key <AB08> { [ comma, U0AB7 ] };
- key <AB09> { [ period, U0964 ] };
- key <AB10> { [ U0AAF, question ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "kan" {
-
- // Inscript layout for Kannada
- // Author : G Karunakar <karunakar@freedomink.org>
- // Date : Wed Nov 13 17:22:58 IST 2002
- // Kannada digits mapped in basic only
-
- name[Group1]= "India - Kannada";
-
- key <TLDE> { [ U0cca, U0c92 ] };
- key <AE01> { [ U0ce7 ] };
- key <AE02> { [ U0ce8 ] };
- key <AE03> { [ U0ce9 ] };
- key <AE04> { [ U0cea ] };
- key <AE05> { [ U0ceb ] };
- key <AE06> { [ U0cec ] };
- key <AE07> { [ U0ced ] };
- key <AE08> { [ U0cee ] };
- key <AE09> { [ U0cef ] };
- key <AE10> { [ U0ce6 ] };
- key <AE11> { [ U0c83 ] };
- key <AE12> { [ U0cc3, U0c8b ] };
-
- key <AD01> { [ U0ccc, U0c94 ] };
- key <AD02> { [ U0cc8, U0c90 ] };
- key <AD03> { [ U0cbe, U0c86 ] };
- key <AD04> { [ U0cc0, U0c88 ] };
- key <AD05> { [ U0cc2, U0c8a ] };
- key <AD06> { [ U0cac, U0cad ] };
- key <AD07> { [ U0cb9, U0c99 ] };
- key <AD08> { [ U0c97, U0c98 ] };
- key <AD09> { [ U0ca6, U0ca7 ] };
- key <AD10> { [ U0c9c, U0c9d ] };
- key <AD11> { [ U0ca1, U0ca2 ] };
- key <AD12> { [ U0cbc, U0c9e ] };
-
- key <AC01> { [ U0ccb, U0c93 ] };
- key <AC02> { [ U0cc7, U0c8f ] };
- key <AC03> { [ U0ccd, U0c85 ] };
- key <AC04> { [ U0cbf, U0c87 ] };
- key <AC05> { [ U0cc1, U0c89 ] };
- key <AC06> { [ U0caa, U0cab ] };
- key <AC07> { [ U0cb0, U0cb1 ] };
- key <AC08> { [ U0c95, U0c96 ] };
- key <AC09> { [ U0ca4, U0ca5 ] };
- key <AC10> { [ U0c9a, U0c9b ] };
- key <AC11> { [ U0c9f, U0ca0 ] };
-
- key <AB01> { [ U0cc6, U0c8e ] };
- key <AB02> { [ U0c82 ] };
- key <AB03> { [ U0cae, U0ca3 ] };
- key <AB04> { [ U0ca8 ] };
- key <AB05> { [ U0cb5, U0cb4 ] };
- key <AB06> { [ U0cb2, U0cb3 ] };
- key <AB07> { [ U0cb8, U0cb6 ] };
- key <AB08> { [ comma , U0cb7 ] };
- key <AB09> { [ period ] };
- key <AB10> { [ U0caf, U0040 ] };
-
- key <RALT> {
- symbols[Group1] = [ Mode_switch, Multi_key ],
- virtualMods = AltGr
- };
-
-};
-
-// Description : A keymap for Malayalam
-// Encoding : Unicode (http://www.unicode.org)
-// Author : Baiju M <baiju@freeshell.org>
-// Date : Sat Aug 17 21:10:48 IST 2002
-// Mapping:
-
-partial alphanumeric_keys
-xkb_symbols "mal" {
-
- name[Group1] = "India - Malayalam";
-
- //From grave to backslash (\)
-
- key <TLDE> { [ U0d4a , U0d12 ] };
-
-// svu:
-// These lines were in former "mal" variant -
-// but the digits are replaced with the ones from 'mal_plusnum' -
-// for the integrity of all Indian layouts
-//
-// key <AE01> { [1 , exclam ] };
-// key <AE02> { [2 , at ] };
-// key <AE03> { [3 , numbersign ] };
-// key <AE04> { [4 , dollar ] };
-// key <AE05> { [5 , percent ] };
-// key <AE06> { [6 ,asciicircum ] };
-// key <AE07> { [7 , ampersand ] };
-// key <AE08> { [8 , asterisk ] };
-// key <AE09> { [9 , parenleft ] };
-// key <AE10> { [0 , parenright ] };
-
- key <AE01> { [ U0d67 , exclam ] };
- key <AE02> { [ U0d68 , at ] };
- key <AE03> { [ U0d69 , numbersign ] };
- key <AE04> { [ U0d6a , dollar ] };
- key <AE05> { [ U0d6b , percent ] };
- key <AE06> { [ U0d6c , asciicircum ] };
- key <AE07> { [ U0d6d , ampersand ] };
- key <AE08> { [ U0d6e , asterisk ] };
- key <AE09> { [ U0d6f , parenleft ] };
- key <AE10> { [ U0d66 , parenright ] };
-
- key <AE11> { [ minus , U0d03 ] };
- key <AE12> { [ U0d43 , U0d0b ] };
- key <BKSL> { [U0200c, U05C ]};//bksl: ZWNJ
-
-
- // From 'q' to right bracket (])
-
- key <AD01> { [ U0d4c , U0d14 ] };
- key <AD02> { [ U0d48 , U0d10 ] };
- key <AD03> { [ U0d3e , U0d06 ] };
- key <AD04> { [ U0d40 , U0d08 ] };
- key <AD05> { [ U0d42 , U0d0a ] };
- key <AD06> { [ U0d2c , U0d2d ] };
- key <AD07> { [ U0d39 , U0d19 ] };
- key <AD08> { [ U0d17 , U0d18 ] };
- key <AD09> { [ U0d26 , U0d27 ] };
- key <AD10> { [ U0d1c , U0d1d ] };
- key <AD11> { [ U0d21 , U0d22 ] };
- key <AD12> { [ U0200d , U0d1e ] };
-
- // From 'a' to apostrophe (')
-
- key <AC01> { [ U0d4b , U0d13 ] };
- key <AC02> { [ U0d47 , U0d0f ] };
- key <AC03> { [ U0d4d , U0d05 ] };
- key <AC04> { [ U0d3f , U0d07 ] };
- key <AC05> { [ U0d41 , U0d09 ] };
- key <AC06> { [ U0d2a , U0d2b ] };
- key <AC07> { [ U0d30 , U0d31 ] };
- key <AC08> { [ U0d15 , U0d16 ] };
- key <AC09> { [ U0d24 , U0d25 ] };
- key <AC10> { [ U0d1a , U0d1b ] };
- key <AC11> { [ U0d1f , U0d20 ] };
-
- // From 'z' to slash (/)
-
- key <AB01> { [ U0d46 , U0d0e ] };
- key <AB02> { [ U0d02 , U200b ] };//X:ZWSP
- key <AB03> { [ U0d2e , U0d23 ] };
- key <AB04> { [ U0d28 ] };
- key <AB05> { [ U0d35 , U0d34 ] };
- key <AB06> { [ U0d32 , U0d33 ] };
- key <AB07> { [ U0d38 , U0d36 ] };
- key <AB08> { [ comma , U0d37 ] };
- key <AB09> { [ period , U0200d ] };
- key <AB10> { [ U0d2f , question ] };
-
-};
-
-//Name : Lalitha
-//Description : A transliteration keyboard layout for Malayalam
-//Original Author : Noah Levitt<nlevitt at columbia.edu>
-//Current Main : Jinesh K.J<jinesh.k@gmail.com>, Swathantra Malayalam Computing (SMC)<smc-discuss@googlegroups.com>
-
-partial alphanumeric_keys
-xkb_symbols "mal_lalitha" {
- name[Group1] = "India - Malayalam Lalitha";
- key.type="FOUR_LEVEL";
- //Top Alphanumeric row
- // Roman digits
- key <TLDE> { [ U0D4D, U0D02, apostrophe, asciitilde ] }; // apostrophe: virama(chandrakala),anusvara
- key <AE01> { [ 1, exclam, U0D67, exclam ] };
- key <AE02> { [ 2, at, U0D68, at ] };
- key <AE03> { [ 3, numbersign, U0D69, numbersign ] };
- key <AE04> { [ 4, dollar, U0D6A, dollar ] };
- key <AE05> { [ 5, percent, U0D6B, percent ] };
- key <AE06> { [ 6, asciicircum, U0D6C, asciicircum ] };
- key <AE07> { [ 7, ampersand, U0D6D, ampersand ] };
- key <AE08> { [ 8, asterisk, U0D6E, asterisk ] };
- key <AE09> { [ 9, parenleft, U0D6F, parenleft ] };
- key <AE10> { [ 0, parenright, U0D66, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
- key <BKSL> { [ U005C, U007C, U200C ] };//backslash:pipe,backslash,ZWNJ
-
- //Q Row
- key <AD01> { [ U0D48, U0D4C, U0D10, U0D14 ] }; // Q: ai and au matras
- key <AD02> { [ U0D35 ] }; // W: wa, OM
- key <AD03> { [ U0D46, U0D47, U0D0E, U0D0F ] }; // E: e,ee matras
- key <AD04> { [ U0D30, U0D31, U0D43, U0D0B ] }; // R: ra,rra, vocalic Ri
- key <AD05> { [ U0D24, U0D25, U0D1F, U0D20 ] }; // T: tha, ttha,ta,tta
- key <AD06> { [ U0D2f ] }; // Y: ya
- key <AD07> { [ U0D41, U0D42, U0D09, U0D0A ] }; // U: u, uu matras
- key <AD08> { [ U0D3F, U0D40, U0D07, U0D08 ] }; // I: i, ii matras
- key <AD09> { [ U0D4A, U0D4B, U0D12, U0D13 ] }; // O: o, oo matras
- key <AD10> { [ U0D2A ] }; // P: pa
- key <AD11> { [ bracketleft, braceleft ] };//braceleft:
- key <AD12> { [ bracketright, braceright ] };//braceright:
-
- //A Row
- key <AC01> { [ U0D3E, U0D05, U0D06, U0D05 ] }; // A: a,aa
- key <AC02> { [ U0D38, U0D37 ] }; // S: sa, ssa
- key <AC03> { [ U0D26, U0D27, U0D21, U0D22 ] }; // D: soft da,soft dda,hard da,hard dda,
- key <AC04> { [ U0D2B ] }; // F: pha
- key <AC05> { [ U0D17, U0D18 ] }; // G: ga, gha
- key <AC06> { [ U0D39, U0D03 ] }; // H: ha, visarg
- key <AC07> { [ U0D1C, U0D1D ] }; // J: ja, jha
- key <AC08> { [ U0D15, U0D16 ] }; // K: ka, kha
- key <AC09> { [ U0D32, U0D33 ] }; // L: la, vocalic L or lru matra`
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [apostrophe, quotedbl ] };
-
- //Z Row
- key <AB01> { [ U0D34, U0D36 ] }; // Z: sha,zha
- key <AB02> { [ U0D4D, U200B ] }; // X: chandrakala,ZWSP
- key <AB03> { [ U0D1A, U0D1B ] }; // C: ca, cha
- key <AB04> { [ U0D35, U200D ] }; // V: va,ZWJ
- key <AB05> { [ U0D2C, U0D2D ] }; // B: ba, bha
- key <AB06> { [ U0D28, U0D23, U0D19, U0D1E ] }; // N: na, hard na,nga,nha
- key <AB07> { [ U0D2E, U0D02 ] }; // M: ma
- key <AB08> { [ comma, U003C ] };// comma: comma
- key <AB09> { [ period, U003E ] }; // period: period
- key <AB10> { [ slash, question ] };
-
- // begin modifier mappings
-// modifier_map Shift { Shift_L };
-// modifier_map Lock { Caps_Lock };
-// modifier_map Control{ Control_L };
-// modifier_map Mod3 { Mode_switch };
- include "level3(ralt_switch)"
-};
-
-
-partial alphanumeric_keys
-xkb_symbols "ori" {
- // Inscript layout for Oriya
- // Author: G Karunakar <karunakar@freedomink.org>
- // Date: Wed Nov 13 18:16:19 IST 2002
-
- name[Group1]= "India - Oriya";
-
- key <AE01> { [ U0b67 ] };
- key <AE02> { [ U0b68 ] };
- key <AE03> { [ U0b69 ] };
- key <AE04> { [ U0b6a ] };
- key <AE05> { [ U0b6b ] };
- key <AE06> { [ U0b6c ] };
- key <AE07> { [ U0b6d ] };
- key <AE08> { [ U0b6e ] };
- key <AE09> { [ U0b6f ] };
- key <AE10> { [ U0b66 ] };
- key <AE11> { [ U0b03 ] };
- key <AE12> { [ U0b43, U0b0b ] };
-
- key <AD01> { [ U0b4c, U0b14 ] };
- key <AD02> { [ U0b48, U0b10 ] };
- key <AD03> { [ U0b3e, U0b06 ] };
- key <AD04> { [ U0b40, U0b08 ] };
- key <AD05> { [ U0b42, U0b0a ] };
- key <AD06> { [ U0b2c, U0b2d ] };
- key <AD07> { [ U0b39, U0b19 ] };
- key <AD08> { [ U0b17, U0b18 ] };
- key <AD09> { [ U0b26, U0b27 ] };
- key <AD10> { [ U0b1c, U0b1d ] };
- key <AD11> { [ U0b21, U0b22 ] };
- key <AD12> { [ U0b3c, U0b1e ] };
-
- key <AC01> { [ U0b4b, U0b13 ] };
- key <AC02> { [ U0b47, U0b0f ] };
- key <AC03> { [ U0b4d, U0b05 ] };
- key <AC04> { [ U0b3f, U0b07 ] };
- key <AC05> { [ U0b41, U0b09 ] };
- key <AC06> { [ U0b2a, U0b2b ] };
- key <AC07> { [ U0b30 ] };
- key <AC08> { [ U0b15, U0b16 ] };
- key <AC09> { [ U0b24, U0b25 ] };
- key <AC10> { [ U0b1a, U0b1b ] };
- key <AC11> { [ U0b1f, U0b20 ] };
-
- key <AB02> { [ U0b02, U0b01 ] };
- key <AB03> { [ U0b2e, U0b23 ] };
- key <AB04> { [ U0b28 ] };
- key <AB05> { [ U0b35 ] };
- key <AB06> { [ U0b32, U0b33 ] };
- key <AB07> { [ U0b38, U0b36 ] };
- key <AB08> { [ comma , U0b37 ] };
- key <AB09> { [ period ] };
- key <AB10> { [ U0b2f, U0040 ] };
-
- key <RALT> {
- symbols[Group1] = [ Mode_switch, Multi_key ],
- virtualMods = AltGr
- };
-};
-
-// based on a keyboard map from an 'xkb/symbols/tml' file
-// INSCRIPT
-partial alphanumeric_keys
-xkb_symbols "tam" {
- name[Group1]= "India - Tamil";
-
- key <TLDE> { [ U0BCA, U0B92 ] };
-
- // Mainly numbers.
- key <AE01> { [ U0BE7 ] };
- key <AE02> { [ U0BE8 ] };
- key <AE03> { [ U0BE9 ] };
- key <AE04> { [ U0BEA ] };
- key <AE05> { [ U0BEB ] };
- key <AE06> { [ U0BEC ] };
- key <AE07> { [ U0BED ] };
- key <AE08> { [ U0BEE ] };
- key <AE09> { [ U0BEF, parenleft ] };
- key <AE10> { [ U0BF0, parenright ] };
- key <AE11> { [ U0BF1, U0B83 ] };
- key <AE12> { [ U0BF2, plus ] };
-
-// Mainly long vowels
-
- key <AD01> { [ U0BCC, U0B94 ] };
- key <AD02> { [ U0BC8, U0B90 ] };
- key <AD03> { [ U0BBE, U0B86 ] };
- key <AD04> { [ U0BC0, U0B88 ] };
- key <AD05> { [ U0BC2, U0B8A ] };
-
-// Mainly voiced consonants
-
- key <AD07> { [ U0BB9, U0B99 ] };
- key <AD10> { [ U0B9c ] };
- key <AD12> { [ U0B9E ] };
-
-// Mainly short vowels
- key <AC01> { [ U0BCB, U0B93 ] };
- key <AC02> { [ U0BC7, U0B8F ] };
- key <AC03> { [ U0BCD, U0B85 ] };
- key <AC04> { [ U0BBF, U0B87 ] };
- key <AC05> { [ U0BC1, U0B89 ] };
-
-// Mainly unvoiced consonants
-
- key <AC06> { [ U0BAA ] };
- key <AC07> { [ U0BB0, U0BB1 ] };
- key <AC08> { [ U0B95 ] };
- key <AC09> { [ U0BA4 ] };
- key <AC10> { [ U0B9A ] };
- key <AC11> { [ U0B9F ] };
- key <BKSL> { [ U005C, U007C ] };//backslash-bar - Changed to Unicode
-
- key <AB01> { [ U0BC6, U0B8E ] };
- key <AB02> { [ U0B82 ] };
- key <AB03> { [ U0BAE, U0BA3 ] };
- key <AB04> { [ U0BA8, U0BA9 ] };
- key <AB05> { [ U0BB5, U0BB4 ] };
- key <AB06> { [ U0BB2, U0BB3 ] };
- key <AB07> { [ U0BB8, U0BB6 ] };
- key <AB08> { [ comma, U0BB7 ] };
- key <AB09> { [ period, U0964 ] };
- key <AB10> { [ U0BAF, question ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "tam_unicode" {
-
-// Description: A keymap based on the TamilNet'99 typewriter keyboard
-// Encoding: Unicode (http://www.unicode.org)
-// Author: Thuraiappah Vaseeharan <vasee@ieee.org>
-// Modifed by: Malathi S <malathiramya@gmail.com>
-// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org>
-// Date : Fri Sep 4 11:32:00 CST 2009
-// Mapping:
-
- name[Group1]= "India - Tamil Unicode";
-
- // granthas
- key <TLDE> { [ apostrophe, asciitilde ] };
- key <AE01> { [ U0031, exclam ] } ;
- key <AE02> { [ U0032, at ] } ;
- key <AE03> { [ U0033, numbersign ] } ;
- key <AE04> { [ U0034, U0BF9 ] } ;
- key <AE05> { [ U0035, percent ] } ;
- key <AE06> { [ U0036, asciicircum ] } ;
- key <AE07> { [ U0037, ampersand ] } ;
- key <AE08> { [ U0038, asterisk ] } ;
- key <AE09> { [ U0039, parenleft ] } ;
- key <AE10> { [ U0030, parenright ] } ;
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
-
- // Qrow
- key <AD01> { [ U0B9E, U0BB6 ] };
- key <AD02> { [ U0BB1, U0BB7 ] };
- key <AD03> { [ U0BA8, U0BB8 ] };
- key <AD04> { [ U0B9A, U0BB9 ] };
- key <AD05> { [ U0BB5, U0B9C ] };
- key <AD06> { [ U0BB2 ] };
- key <AD07> { [ U0BB0 ] };
- key <AD08> { [ U0BC8, U0B90 ] };
- key <AD09> { [ U0BCA, U0BCB ] };
- key <AD10> { [ U0BBF, U0BC0 ] };
- key <AD11> { [ U0BC1, U0BC2 ] };
-
- // Arow
- key <AC01> { [ U0BAF ] };
- key <AC02> { [ U0BB3 ] };
- key <AC03> { [ U0BA9 ] };
- key <AC04> { [ U0B95 ] };
- key <AC05> { [ U0BAA ] };
- key <AC06> { [ U0BBE, U0BB4 ] };
- key <AC07> { [ U0BA4 ] };
- key <AC08> { [ U0BAE ] };
- key <AC09> { [ U0B9F ] };
- key <AC10> { [ U0BCD, U0B83 ] };
- key <AC11> { [ U0B99 ] };
-
- // Zrow
- key <AB01> { [ U0BA3 ] };
- key <AB02> { [ U0B92, U0B93 ] };
- key <AB03> { [ U0B89, U0B8A ] };
- key <AB04> { [ U0B8E, U0B8F ] };
- key <AB05> { [ U0BC6, U0BC7 ] };
- key <AB06> { [ U0B94, U0BCC ] };
- key <AB07> { [ U0B85, U0B86 ] };
- key <AB08> { [ U0B87, U0B88 ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "tam_keyboard_with_numerals" {
-
-// Description: A keymap based on the TamilNet'99 typewriter keyboard
-// Encoding: Unicode (http://www.unicode.org)
-// Author: Malathi S <malathiramya@gmail.com>
-// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org>
-// Date : Fri Sep 4 11:33:00 CST 2009
-// Mapping:
-
- name[Group1]= "India - Tamil Keyboard with Numerals";
-
- // Mainly numbers.
- key <TLDE> { [ apostrophe, asciitilde ] };
- key <AE01> { [ U0BE7, exclam ] };
- key <AE02> { [ U0BE8, at ] };
- key <AE03> { [ U0BE9, numbersign ] };
- key <AE04> { [ U0BEA, U0BF9 ] };
- key <AE05> { [ U0BEB, percent ] };
- key <AE06> { [ U0BEC, asciicircum ] };
- key <AE07> { [ U0BED, ampersand ] };
- key <AE08> { [ U0BEE, asterisk ] };
- key <AE09> { [ U0BEF, parenleft ] };
- key <AE10> { [ U0BE6, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
-
- // Qrow
- key <AD01> { [ U0B9E, U0BB6 ] };
- key <AD02> { [ U0BB1, U0BB7 ] };
- key <AD03> { [ U0BA8, U0BB8 ] };
- key <AD04> { [ U0B9a, U0BB9 ] };
- key <AD05> { [ U0BB5, U0B9c ] };
- key <AD06> { [ U0BB2 ] };
- key <AD07> { [ U0BB0 ] };
- key <AD08> { [ U0BC8, U0B90 ] };
- key <AD09> { [ U0BCA, U0BCB ] };
- key <AD10> { [ U0BBF, U0BC0 ] };
- key <AD11> { [ U0BC1, U0BC2 ] };
-
- // Arow
- key <AC01> { [ U0BAF ] };
- key <AC02> { [ U0BB3 ] };
- key <AC03> { [ U0BA9 ] };
- key <AC04> { [ U0B95 ] };
- key <AC05> { [ U0BAA ] };
- key <AC06> { [ U0BBE, U0BB4 ] };
- key <AC07> { [ U0BA4 ] };
- key <AC08> { [ U0BAE ] };
- key <AC09> { [ U0B9F ] };
- key <AC10> { [ U0BCD, U0B83 ] };
- key <AC11> { [ U0B99 ] };
-
- // Zrow
- key <AB01> { [ U0BA3 ] };
- key <AB02> { [ U0B92, U0B93 ] };
- key <AB03> { [ U0B89, U0B8A ] };
- key <AB04> { [ U0B8E, U0B8F ] };
- key <AB05> { [ U0BC6, U0BC7 ] };
- key <AB06> { [ U0B94, U0BCC ] };
- key <AB07> { [ U0B85, U0B86 ] };
- key <AB08> { [ U0B87, U0B88 ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "tam_TSCII" {
-
-// Description : A Tamil typewrite-style keymap
-// loosely based on TamilNet'99 reommendations
-// Encoding : TSCII (http://www.tscii.org)
-// Author : Thuraiappah Vaseeharan <vasee@ieee.org>
-// Last Modified: Sat Jan 5 17:11:26 CST 2002
-
- name[Group1]= "India - Tamil TSCII Typewriter";
-
- key <AE01> { [ 0x10000b7, 0x10000a4 ] }; // aytham
- key <AE02> { [ 0x1000082, 0x10000a5 ] }; // shri
- key <AE03> { [ 0x1000083, 0x1000088 ] }; // ja
- key <AE04> { [ 0x1000084, 0x1000089 ] }; // sha
- key <AE05> { [ 0x1000085, 0x100008a ] }; // sa
- key <AE06> { [ 0x1000086, 0x100008b ] }; // ha
- key <AE07> { [ 0x1000087, 0x100008c ] }; // ksha
-
- // Qrow
- key <AD01> { [ 0x10000bb, 0x100009a ] }; // nja
- key <AD02> { [ 0x10000c8, 0x10000da ] }; // Ra
- key <AD03> { [ 0x10000bf, 0x10000d1 ] }; // NNa
- key <AD04> { [ 0x10000ba, 0x10000cd ] }; // ca
- key <AD05> { [ 0x10000c5, 0x10000d7 ] }; // va
- key <AD06> { [ 0x10000c4, 0x10000d6 ] }; // la
- key <AD07> { [ 0x10000c3, 0x10000d5 ] }; // ra
- key <AD08> { [ 0x10000a8, 0x10000b3 ] }; // sangili, ai
- key <AD09> { [ 0x10000ca, 0x10000cb ] }; // di, dI
- key <AD10> { [ 0x10000a2, 0x10000a3 ] }; // visiri
- key <AD11> { [ dead_acute, 0x10000a3 ] }; // Ukaaram
-
- // Arow
- key <AC01> { [ 0x10000c2, 0x10000d4 ] }; // ya
- key <AC02> { [ 0x10000c7, 0x10000d9 ] }; // La
- key <AC03> { [ 0x10000c9, 0x10000db ] }; // na
- key <AC04> { [ 0x10000b8, 0x10000cc ] }; // ka
- key <AC05> { [ 0x10000c0, 0x10000d2 ] }; // pa
- key <AC06> { [ dead_grave,0x10000a1 ] }; // pulli,aravu
- key <AC07> { [ 0x10000be, 0x10000d0 ] }; // tha
- key <AC08> { [ 0x10000c1, 0x10000d3 ] }; // ma
- key <AC09> { [ 0x10000bc, 0x10000ce ] }; // da
- key <AC10> { [ 0x10000c6, 0x10000d8 ] }; // zha
- key <AC11> { [ 0x10000b9, 0x1000099 ] }; // nga
-
- // Zrow
- key <AB01> { [ 0x10000bd, 0x10000cf ] }; // Na
- key <AB02> { [ 0x10000b4, 0x10000b5 ] }; // o, O
- key <AB03> { [ 0x10000af, 0x10000b0 ] }; // u, U
- key <AB04> { [ 0x10000b1, 0x10000b2 ] }; // e, E
- key <AB05> { [ 0x10000a6, 0x10000a7 ] }; // kombus
- key <AB06> { [ 0x10000b6, 0x10000aa ] }; // au
- key <AB07> { [ 0x10000ab, 0x10000ac ] }; // a, A
- key <AB08> { [ 0x10000fe, 0x10000ae ] }; // i, I
-
-};
-
-partial alphanumeric_keys
-xkb_symbols "tam_TAB" {
-
-// Description: A keymap based on the TamilNet'99 typewriter keyboard
-// Encoding: TAB (http://www.tamilnet99.org)
-// Author: Thuraiappah Vaseeharan <t_vasee@yahoo.com>
-// Date : Sun Aug 12 02:23:00 CDT 2001
-
- name[Group1]= "India - Tamil TAB Typewriter";
-
- // numeral row
- key <AE01> { [ 0x10000e7, 0x10000a7 ] } ;
- key <AE02> { [ 0x10000fa, 0x10000a8 ] } ;
- key <AE03> { [ 0x10000fb ] } ;
- key <AE04> { [ 0x10000fc ] } ;
- key <AE05> { [ 0x10000fd ] } ;
- key <AE06> { [ 0x10000fe ] } ;
- key <AE07> { [ 0x10000ff ] } ;
-
- // q-row
- key <AD01> { [ 0x10000eb, 0x10000b3 ] };
- key <AD02> { [ 0x10000f8, 0x10000c1 ] };
- key <AD03> { [ 0x10000ef, 0x10000b8 ] };
- key <AD04> { [ 0x10000ea, 0x10000b2 ] };
- key <AD05> { [ 0x10000f5, 0x10000be ] };
- key <AD06> { [ 0x10000f4, 0x10000bd ] };
- key <AD07> { [ 0x10000f3, 0x10000bc ] };
- key <AD08> { [ 0x10000ac, 0x10000e4 ] };
- key <AD09> { [ 0x10000ae, 0x10000af ] };
- key <AD10> { [ 0x10000a4, 0x10000a6 ] };
- key <AD11> { [ dead_circumflex, 0x10000a6 ] }; // Ukaaram
-
- // a-row
- key <AC01> { [ 0x10000f2, 0x10000bb ] };
- key <AC02> { [ 0x10000f7, 0x10000c0 ] };
- key <AC03> { [ 0x10000f9, 0x10000c2 ] };
- key <AC04> { [ 0x10000e8, 0x10000b0 ] };
- key <AC05> { [ 0x10000f0, 0x10000b9 ] };
- key <AC06> { [ 0x10000a2, 0x10000a3 ] };
- key <AC07> { [ 0x10000ee, 0x10000b6 ] };
- key <AC08> { [ 0x10000f1, 0x10000ba ] };
- key <AC09> { [ 0x10000ec, 0x10000b4 ] };
- key <AC10> { [ 0x10000f6, 0x10000bf ] };
- key <AC11> { [ 0x10000e9, 0x10000b1 ] };
-
- // z-row
- key <AB01> { [ 0x10000ed, 0x10000b5 ] };
- key <AB02> { [ 0x10000e5, 0x10000e6 ] };
- key <AB03> { [ 0x10000e0, 0x10000e1 ] };
- key <AB04> { [ 0x10000e2, 0x10000e3 ] };
- key <AB05> { [ 0x10000aa, 0x10000ab ] };
- key <AB06> { [ 0x10000ac, 0x10000a3 ] };
- key <AB07> { [ 0x10000dc, 0x10000dd ] };
- key <AB08> { [ 0x10000de, 0x10000df ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "tel" {
-
- // Inscript layout for Telugu using Unicode
- // Author: G Karunakar <karunakar@freedomink.org>
- // Date:
- // See layout at http://www.indlinux.org/keymap/telugu.php
-
- name[Group1]= "India - Telugu";
-
- key <TLDE> { [ U0c4a, U0c12 ] };
- key <AE01> { [ U0c67 ] };
- key <AE02> { [ U0c68 ] };
- key <AE03> { [ U0c69, numbersign ] };
- key <AE04> { [ U0c6a, dollar ] };
- key <AE05> { [ U0c6b, percent ] };
- key <AE06> { [ U0c6c, asciicircum ] };
- key <AE07> { [ U0c6d, ampersand ] };
- key <AE08> { [ U0c6e, asterisk ] };
- key <AE09> { [ U0c6f, parenleft ] };
- key <AE10> { [ U0c66, parenright ] };
- key <AE11> { [ U0c03, underscore ] };
- key <AE12> { [ U0c43, U0c0b ] };
- key <BKSP> { [ BackSpace ] };
-
- key <AD01> { [ U0c4c, U0c14 ] };
- key <AD02> { [ U0c48, U0c10 ] };
- key <AD03> { [ U0c3e, U0c06 ] };
- key <AD04> { [ U0c40, U0c08 ] };
- key <AD05> { [ U0c42, U0c0a ] };
- key <AD06> { [ U0c2c, U0c2d ] };
- key <AD07> { [ U0c39, U0c19 ] };
- key <AD08> { [ U0c17, U0c18 ] };
- key <AD09> { [ U0c26, U0c27 ] };
- key <AD10> { [ U0c1c, U0c1d ] };
- key <AD11> { [ U0c21, U0c22 ] };
- key <AD12> { [ U0c1e ] };
-
- key <AC01> { [ U0c4b, U0c13 ] };
- key <AC02> { [ U0c47, U0c0f ] };
- key <AC03> { [ U0c4d, U0c05 ] };
- key <AC04> { [ U0c3f, U0c07 ] };
- key <AC05> { [ U0c41, U0c09 ] };
- key <AC06> { [ U0c2a, U0c2b ] };
- key <AC07> { [ U0c30, U0c31 ] };
- key <AC08> { [ U0c15, U0c16 ] };
- key <AC09> { [ U0c24, U0c25 ] };
- key <AC10> { [ U0c1a, U0c1b ] };
- key <AC11> { [ U0c1f, U0c20 ] };
-
- key <AB01> { [ U0c46, U0c0e ] };
- key <AB02> { [ U0c02, U0c01 ] };
- key <AB03> { [ U0c2e, U0c23 ] };
- key <AB04> { [ U0c28 ] };
- key <AB05> { [ U0c35 ] };
- key <AB06> { [ U0c32, U0c33 ] };
- key <AB07> { [ U0c38, U0c36 ] };
- key <AB08> { [ comma , U0c37 ] };
- key <AB09> { [ period ] };
- key <AB10> { [ U0c2f, U0040 ] };
-
- key <RALT> {
- symbols[Group1] = [ Mode_switch, Multi_key ],
- virtualMods = AltGr
- };
-};
-
-partial alphanumeric_keys
-xkb_symbols "urd-phonetic" {
- include "pk(urd-phonetic)"
- name[Group1]= "India - Urdu, Phonetic";
-};
-
-partial alphanumeric_keys
-xkb_symbols "urd-phonetic3" {
- include "pk(urd-crulp)"
- name[Group1]= "India - Urdu, Alternative phonetic";
-};
-
-partial alphanumeric_keys
-xkb_symbols "urd-winkeys" {
- include "pk(urd-nla)"
- name[Group1]= "India - Urdu, Winkeys";
-};
-
-// based on a keyboard map from an 'xkb/symbols/gur' file
-
-partial alphanumeric_keys
-xkb_symbols "guru" {
- name[Group1]= "India - Gurmukhi";
-
- // Mainly numbers.
- key <AE01> { [ U0A67 ] };
- key <AE02> { [ U0A68 ] };
- key <AE03> { [ U0A69, U0A71 ] };
- key <AE04> { [ U0A6A, U0A74 ] };
- key <AE05> { [ U0A6B, U262C ] };
- key <AE06> { [ U0A6C ] };
- key <AE07> { [ U0A6D ] };
- key <AE08> { [ U0A6e ] };
- key <AE09> { [ U0A6F, parenleft ] };
- key <AE10> { [ U0A66, parenright ] };
- key <AE11> { [ gur_visarga ] };
- key <AE12> { [ equal, plus ] };
-
-// Mainly long vowels
-
- key <AD01> { [ U0A4C, U0A14 ] };
- key <AD02> { [ U0A48, U0A10 ] };
- key <AD03> { [ U0A3E, U0A06 ] };
- key <AD04> { [ U0A40, U0A08 ] };
- key <AD05> { [ U0A42, U0A0A ] };
-
-// Mainly voiced consonants
-
- key <AD06> { [ U0A2C, U0A2D ] };
- key <AD07> { [ U0A39, U0A19 ] };
- key <AD08> { [ U0A17, U0A18 ] };
- key <AD09> { [ U0A26, U0A27 ] };
- key <AD10> { [ U0A1C, U0A1D ] };
- key <AD11> { [ U0A21, U0A22 ] };
- key <AD12> { [ U0A3C, U0A1E ] };
-
-// Mainly short vowels
- key <AC01> { [ U0A4B, U0A13 ] };
- key <AC02> { [ U0A47, U0A0F ] };
- key <AC03> { [ U0A4D, U0A05 ] };
- key <AC04> { [ U0A3F, U0A07 ] };
- key <AC05> { [ U0A41, U0A09 ] };
-
-// Mainly unvoiced consonants
-
- key <AC06> { [ U0A2A, U0A2B ] };
- key <AC07> { [ U0A30, U0A5C ] };
- key <AC08> { [ U0A15, U0A16 ] };
- key <AC09> { [ U0A24, U0A25 ] };
- key <AC10> { [ U0A1A, U0A1B ] };
- key <AC11> { [ U0A1F, U0A20 ] };
- key <BKSL> { [ U005C, U007C ] };
-
- key <AB01> { [ z, U0A01 ] };
- key <AB02> { [ U0A02, U0A70, U0A71 ] };
- key <AB03> { [ U0A2E, U0A23 ] };
- key <AB04> { [ U0A28, U0A28 ] };
- key <AB05> { [ U0A35, U0A35 ] };
- key <AB06> { [ U0A32, U0A33 ] };
- key <AB07> { [ U0A38, U0A36 ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, U0964 ] };
- key <AB10> { [ U0A2F, question ] };
-};
-
-//Name : Jhelum (Refind Inscript)
-//Description : A Jhelum keyboard layout for Gurmukhi (Punjabi)
-// http://www.satluj.org/Jhelum.html
-//Modified for Inscript to make
-//Original Author : Amanpreet Singh Alam <apreet.alam@gmail.com
-
-partial alphanumeric_keys
-xkb_symbols "jhelum" {
- name[Group1] = "India - Gurmukhi Jhelum";
- key.type="FOUR_LEVEL";
- //Top Alphanumeric row
- // Roman digits
- key <TLDE> { [ apostrophe, asciitilde, U0A02,U0A01 ] }; // apostrophe: anusvara, candrabindu
- key <AE01> { [ 1,exclam, U0A67, exclam ] };
- key <AE02> { [ 2,at, U0A68, at ] };
- key <AE03> { [ 3,numbersign, U0A69, numbersign ] };
- key <AE04> { [ 4,dollar, U0A6A, dollar ] };
- key <AE05> { [ 5,percent,U0A6B, percent ] };
- key <AE06> { [ 6,asciicircum, U0A6C,asciicircum ] };
- key <AE07> { [ 7,ampersand,U0A6D,ampersand ] };
- key <AE08> { [ 8,asterisk,U0A6E, asterisk ] };
- key <AE09> { [ 9,parenleft,U0A6F,parenleft ] };
- key <AE10> { [ 0,parenright,U0A66,parenright ] };
- key <AE11> { [ minus,underscore] };
- key <AE12> { [ equal,plus] };
- key <BKSL> { [ U0964,U0965,U007C,U005C] }; //pipe : danda, double danda
-
- //Q Row
- key <AD01> { [ U0A4C, U0A14 ] }; // Q: oo, ooh
- key <AD02> { [ U0A48, U0A10 ] }; // W: ee, ae
- key <AD03> { [ U0A3E, U0A06 ] }; // E: a, aa
- key <AD04> { [ U0A40, U0A08 ] }; // R: ee, ai
- key <AD05> { [ U0A42, U0A0A ] }; // T: u, uu
- key <AD06> { [ U0A30, U0A5C ] }; // Y: ra, raa
- key <AD07> { [ U0A26, U0A27 ] }; // U: tha, thha
- key <AD08> { [ U0A17, U0A18 ] }; // I:ga, gha
- key <AD09> { [ U0A24, U0A1F ] }; // O: ta, tha
- key <AD10> { [ U0A2A, U0A5E ] }; // P: pa, pha
- key <AD11> { [ U0A21, U0A22, bracketleft, braceleft ] };
- key <AD12> { [ U0A19, U0A1E, bracketright, braceright ] };
-
- //A Row
- key <AC01> { [ U0A4B, U0A13 ] }; // A: o, oo
- key <AC02> { [ U0A40, U0A0F ] }; // S: e, ee
- key <AC03> { [ U0A4D, U0A05 ] }; // D: halant, aa
- key <AC04> { [ U0A3F, U0A07 ] }; // F: i, aa
- key <AC05> { [ U0A41, U0A09 ] }; // G: u, uh
- key <AC06> { [ U0A39, U0A20 ] }; // H: ha, thha
- key <AC07> { [ U0A1C, U0A1D ] }; // J: ja, jha
- key <AC08> { [ U0A15, U0A16 ] }; // K: ka, kha
- key <AC09> { [ U0A32, U0A25 ] }; // L: la, tha
- key <AC10> { [ U0A38, semicolon, colon ] }; //; sa
- key <AC11> { [apostrophe, quotedbl ] };
-
- //Z Row
- key <AB01> { [ U0A71, U0A3C ] }; // Z: addak, par bindi
- key <AB02> { [ U0A02, U0A70 ] }; // X: bindi, tippi
- key <AB03> { [ U0A1A, U0A1B ] }; // C: ca, cha
- key <AB04> { [ U0A35, U0A2F ] }; // V: va, ya
- key <AB05> { [ U0A2C, U0A2D ] }; // B: ba, bha
- key <AB06> { [ U0A28, U0A23 ] }; // N: na, nha
- key <AB07> { [ U0A2E, U0A2E ] }; // M: ma
- key <AB08> { [ comma, U262C ] };// comma: comma, dev abbreviation sign
- key <AB09> { [ period, U0A74 ] }; // period: period, nukta
- key <AB10> { [ slash, question ] };
-
-// begin modifier mappings
-// modifier_map Shift { Shift_L };
-// modifier_map Lock { Caps_Lock };
-// modifier_map Control{ Control_L };
-// modifier_map Mod3 { Mode_switch };
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "olpc" {
-
-// Contact: Walter Bender <walter@laptop.org>
-
- include "in(deva)"
- key <TLDE> { [ U094A, U0912 ] }; // DEVANAGARI VOWEL SIGN SHORT O; DEVANAGARI LETTER SHORT O
- key <AE01> { [ U0967, U090D ] }; // DEVANAGARI DIGIT ONE; DEVANAGARI LETTER CANDRA E
- key <AE02> { [ U0968, U0945 ] }; // DEVANAGARI DIGIT TWO; DEVANAGARI VOWEL SIGN CANDRA E
- key <AE03> { [ U0969 ] }; // DEVANAGARI DIGIT THREE;
- key <AE04> { [ U096A ] }; // DEVANAGARI DIGIT FOUR;
- key <AE05> { [ U096B ] }; // DEVANAGARI DIGIT FIVE;
- key <AE06> { [ U096C ] }; // DEVANAGARI DIGIT SIX;
- key <AE07> { [ U096D ] }; // DEVANAGARI DIGIT SEVEN;
- key <AE08> { [ U096E ] }; // DEVANAGARI DIGIT EIGHT;
- key <AE09> { [ U096F, parenleft ] }; // DEVANAGARI DIGIT NINE;
- key <AE10> { [ U0966, parenright ] }; // DEVANAGARI DIGIT ZERO;
- key <AE11> { [ minus, U0903 ] }; // DEVANAGARI SIGN VISARGA;
- key <AE12> { [ U0943, U090B ] }; // DEVANAGARI VOWEL SIGN VOCALIC R; DEVANAGARI LETTER VOCALIC R
-
- key <AD01> { [ U094C, U0914 ] }; // DEVANAGARI VOWEL SIGN AU; DEVANAGARI LETTER AU
- key <AD02> { [ U0948, U0910 ] }; // DEVANAGARI VOWEL SIGN AI; DEVANAGARI LETTER AI
- key <AD03> { [ U093E, U0906 ] }; // DEVANAGARI VOWEL SIGN AA; DEVANAGARI LETTER AA
- key <AD04> { [ U0940, U0908 ] }; // DEVANAGARI VOWEL SIGN II; DEVANAGARI LETTER II
- key <AD05> { [ U0942, U090A ] }; // DEVANAGARI VOWEL SIGN UU; DEVANAGARI LETTER UU
- key <AD06> { [ U092C, U092D ] }; // DEVANAGARI LETTER BA; DEVANAGARI LETTER BHA
- key <AD07> { [ U0939, U0919 ] }; // DEVANAGARI LETTER HA; DEVANAGARI LETTER NGA
- key <AD08> { [ U0917, U0918 ] }; // DEVANAGARI LETTER GA; DEVANAGARI LETTER GHA
- key <AD09> { [ U0926, U0927 ] }; // DEVANAGARI LETTER DA; DEVANAGARI LETTER DHA
- key <AD10> { [ U091C, U091D ] }; // DEVANAGARI LETTER JA; DEVANAGARI LETTER JHA
- key <AD11> { [ U0921, U0922 ] }; // DEVANAGARI LETTER DDA; DEVANAGARI LETTER DDHA
- key <AD12> { [ U093C, U091E ] }; // DEVANAGARI SIGN NUKTA; DEVANAGARI LETTER NYA
-
- key <BKSL> { [ U0949, U0911 ] }; // DEVANAGARI VOWEL SIGN CANDRA O; DEVANAGARI LETTER CANDRA O
-
- key <AC01> { [ U094B, U0913 ] }; // DEVANAGARI VOWEL SIGN O; DEVANAGARI LETTER O
- key <AC02> { [ U0947, U090F ] }; // DEVANAGARI VOWEL SIGN E; DEVANAGARI LETTER E
- key <AC03> { [ U094D, U0905 ] }; // DEVANAGARI SIGN VIRAMA; DEVANAGARI LETTER A
- key <AC04> { [ U093F, U0907 ] }; // DEVANAGARI VOWEL SIGN I; DEVANAGARI LETTER I
- key <AC05> { [ U0941, U0909 ] }; // DEVANAGARI VOWEL SIGN U; DEVANAGARI LETTER U
- key <AC06> { [ U092A, U092B ] }; // DEVANAGARI LETTER PA; DEVANAGARI LETTER PHA
- key <AC07> { [ U0930, U0931 ] }; // DEVANAGARI LETTER RA; DEVANAGARI LETTER RRA
- key <AC08> { [ U0915, U0916 ] }; // DEVANAGARI LETTER KA; DEVANAGARI LETTER KHA
- key <AC09> { [ U0924, U0925 ] }; // DEVANAGARI LETTER TA; DEVANAGARI LETTER THA
- key <AC10> { [ U091A, U091B ] }; // DEVANAGARI LETTER CA; DEVANAGARI LETTER CHA
- key <AC11> { [ U091F, U0920 ] }; // DEVANAGARI LETTER TTA; DEVANAGARI LETTER TTHA
-
- key <AB01> { [ U0946, U090E ] }; // DEVANAGARI VOWEL SIGN SHORT E; DEVANAGARI LETTER SHORT E
- key <AB02> { [ U0902, U0901 ] }; // DEVANAGARI SIGN ANUSVARA; DEVANAGARI SIGN CANDRABINDU
- key <AB03> { [ U092E, U0923 ] }; // DEVANAGARI LETTER MA; DEVANAGARI LETTER NNA
- key <AB04> { [ U0928, U0929 ] }; // DEVANAGARI LETTER NA; DEVANAGARI LETTER NNNA
- key <AB05> { [ U0935, U0934 ] }; // DEVANAGARI LETTER VA; DEVANAGARI LETTER LLLA
- key <AB06> { [ U0932, U0933 ] }; // DEVANAGARI LETTER LA; DEVANAGARI LETTER LLA
- key <AB07> { [ U0938, U0936 ] }; // DEVANAGARI LETTER SA; DEVANAGARI LETTER SHA
- key <AB08> { [ comma, U0937 ] }; // DEVANAGARI LETTER SSA
- key <AB09> { [ period, U0964 ] }; // DEVANAGARI DANDA
- key <AB10> { [ U092F, U095F ] }; // DEVANAGARI LETTER YA; DEVANAGARI LETTER YYA
-
- // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ):
- include "nbsp(zwnj3zwj4)"
-
- include "group(olpc)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "hin-wx" {
-
- name[Group1]= "India - Hindi Wx";
-
- key <TLDE> { [ grave, asciitilde, 2, 3 ] };
-
- key <AE01> { [ 0x1000967, exclam ] };
- key <AE02> { [ 0x1000968, at ] };
- key <AE03> { [ 0x1000969 , numbersign ] };
- key <AE04> { [ 0x100096A , dollar ] };
- key <AE05> { [ 0x100096B , percent ] };
- key <AE06> { [ 0x100096C , asciicircum ] };
- key <AE07> { [ 0x100096D , ampersand ] };
- key <AE08> { [ 0x100096e , asterisk ] };
- key <AE09> { [ 0x100096F, parenleft ] };
- key <AE10> { [ 0x1000966, parenright ] };
- key <AE11> { [ minus, underscore ] };
- key <AE12> { [ equal, plus ] };
-
-
- key <AD01> { [ 0x1000943, 0x1000944, 0x100090B, 0x1000960] };
- key <AD02> { [ 0x1000924, 0x1000925 ] };
- key <AD03> { [ 0x1000947, 0x1000948, 0x100090F, 0x1000910] };
- key <AD04> { [ 0x1000930, 0x1000937 ] };
- key <AD05> { [ 0x100091F, 0x1000920 ] };
-
-
- key <AD06> { [ 0x100092F ] };
- key <AD07> { [ 0x1000941, 0x1000942, 0x1000909, 0x100090A ] };
- key <AD08> { [ 0x100093F, 0x1000940, 0x1000907, 0x1000908 ] };
- key <AD09> { [ 0x100094B, 0x100094C, 0x1000913, 0x1000914] };
- key <AD10> { [ 0x100092A, 0x100092B ] };
- key <AD11> { [ bracketleft, braceleft ] };
- key <AD12> { [ bracketright, braceright ] };
- key <BKSL> { [ backslash, bar, 0x1000964, 0x1000965 ] };
-
- key <AC01> { [ 0x100094D, 0x100093E, 0x1000905,0x1000906 ] };
- key <AC02> { [ 0x1000938, 0x1000936 ] };
- key <AC03> { [ 0x1000921, 0x1000922 ] };
- key <AC04> { [ 0x1000919, 0x100091E ] };
- key <AC05> { [ 0x1000917, 0x1000918 ] };
-
-
- key <AC06> { [ 0x1000939, 0x1000903 ] };
- key <AC07> { [ 0x100091C, 0x100091D ] };
- key <AC08> { [ 0x1000915, 0x1000916 ] };
- key <AC09> { [ 0x1000932, 0x1000962, 0x1000933, 0x100090C] };
- key <AC10> { [ semicolon, colon ] };
- key <AC11> { [ quoteright, quotedbl ] };
-
- key <AB01> { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] };
- key <AB02> { [ 0x1000926, 0x1000927 ] };
- key <AB03> { [ 0x100091A, 0x100091B ] };
- key <AB04> { [ 0x1000935, dead_V ] };
- key <AB05> { [ 0x100092C, 0x100092D ] };
- key <AB06> { [ 0x1000928, 0x1000923 ] };
- key <AB07> { [ 0x100092E, 0x1000902 ] };
- key <AB08> { [ comma, less ] };
- key <AB09> { [ period, greater ] };
- key <AB10> { [ slash, question ] };
-
- include "level3(ralt_switch)"
-};
-
-partial alphanumeric_keys
-xkb_symbols "eng" {
-
- name[Group1]= "India - English with RupeeSign";
-
- include "us(basic)"
-
- include "rupeesign(4)"
-
- include "level3(ralt_switch)"
-};
+// This layout includes all Indian layouts, including: +// - Bengali +// - Gujarati +// - Kannada +// - Malayalam +// - Oriya +// - Tamil +// - Telugu +// - Urdu + +// Links: +// - Indic INSCRIPT keyboard layout diagrams: +// http://java.sun.com/products/jfc/tsc/articles/InputMethod/indiclayout.html +// - Ekusheyr Shadhinota (Bengali layouts): +// http://ekushey.org/projects/shadhinota/index.html +// - Microsoft Windows XP SP2: Indic Language Standards - an Introduction: +// http://www.bhashaindia.com/MSProducts/XpSp2/Articles/IndicLanguageStandards.aspx + +// based on a keyboard map from an 'xkb/symbols/dev' file + +// Devangari is the default. Kill me if I am wrong:) +default partial alphanumeric_keys +xkb_symbols "deva" { + // March 2004 -- David Holl <smyrph+dev_xkb@ece.wpi.edu> + name[Group1]="India"; + + key.type="FOUR_LEVEL"; + + key <TLDE> { [ U094a, U0912, grave, asciitilde ] }; + key <AE01> { [ U0967, U090d, 1, exclam ] }; + key <AE02> { [ U0968, U0945, 2, at ] }; + // Shift+AE0[3-8] really need to return a macro of keys defined by + // INSCRIPT in place of the symbols that are here for now. But this + // requires XKB to map 1 key into two to three other key presses. + key <AE03> { [ U0969, numbersign, 3, numbersign ] }; + key <AE04> { [ U096a, dollar, 4, dollar ] }; + key <AE05> { [ U096b, percent, 5, percent ] }; + key <AE06> { [ U096c, asciicircum, 6, asciicircum ] }; + key <AE07> { [ U096d, ampersand, 7, ampersand ] }; + key <AE08> { [ U096e, asterisk, 8, asterisk ] }; + key <AE09> { [ U096f, parenleft, 9, parenleft ] }; + key <AE10> { [ U0966, parenright, 0, parenright ] }; + key <AE11> { [ minus, U0903, minus, underscore ] }; + key <AE12> { [ U0943, U090b, U0944, U0960 ] }; + + key <AD01> { [ U094c, U0914 ] }; + key <AD02> { [ U0948, U0910 ] }; + key <AD03> { [ U093e, U0906 ] }; + key <AD04> { [ U0940, U0908, U0963, U0961 ] }; + key <AD05> { [ U0942, U090a ] }; + key <AD06> { [ U092c, U092d ] }; + key <AD07> { [ U0939, U0919 ] }; + key <AD08> { [ U0917, U0918, U095a ] }; + key <AD09> { [ U0926, U0927 ] }; + key <AD10> { [ U091c, U091d, U095b ] }; + key <AD11> { [ U0921, U0922, U095c, U095d ] }; + key <AD12> { [ U093c, U091e ] }; + // I added \ / ? | for shell-convenience (file names and piping) + key <BKSL> { [ U0949, U0911, U005C, U007C ] }; + + key <AC01> { [ U094b, U0913 ] }; + key <AC02> { [ U0947, U090f ] }; + key <AC03> { [ U094d, U0905 ] }; + key <AC04> { [ U093f, U0907, U0962, U090c ] }; + key <AC05> { [ U0941, U0909 ] }; + key <AC06> { [ U092a, U092b, NoSymbol, U095e ] }; + key <AC07> { [ U0930, U0931 ] }; + key <AC08> { [ U0915, U0916, U0958, U0959 ] }; + key <AC09> { [ U0924, U0925 ] }; + key <AC10> { [ U091a, U091b, U0952 ] }; + key <AC11> { [ U091f, U0920, NoSymbol, U0951 ] }; + + key <AB01> { [ U0946, U090e, U0953 ] }; + key <AB02> { [ U0902, U0901, NoSymbol, U0950 ] }; + key <AB03> { [ U092e, U0923, U0954 ] }; + key <AB04> { [ U0928, U0929 ] }; + key <AB05> { [ U0935, U0934 ] }; + key <AB06> { [ U0932, U0933 ] }; + key <AB07> { [ U0938, U0936 ] }; + key <AB08> { [ comma, U0937, U0970 ] }; + key <AB09> { [ period, U0964, U0965, U093d ] }; + // I added \ / ? | for shell-convenience (file names and piping) + key <AB10> { [ U092f, U095f, slash, question ] }; + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" +}; + +//Name : Bolnagri (Combined) +//Description : A phonetic keyboard layout for Devnagari(Hindi) +// http://www.indlinux.org/wiki/index.php/BolNagri +//NOTE : This is a combined map of bolnagri_matras and bolnagri_vowels. +//Inspired by "devrom" keymap by Steve Smith for the windows tool "keyman" +//Original Author : Noah Levitt<nlevitt at columbia.edu> +//Past Authors : Pramod.R <pramodr at gmail.com> and Ravikant <ravikant at sarai.net> +// Current Main.: G Karunakar <karunakar@sarai.net> + +partial alphanumeric_keys +xkb_symbols "bolnagri" { + name[Group1] = "India - Hindi Bolnagri"; + key.type="FOUR_LEVEL"; + //Top Alphanumeric row + // Roman digits + key <TLDE> { [ U0902, U0901, apostrophe, asciitilde ] }; // apostrophe: anusvara, candrabindu + key <AE01> { [ 1, exclam, U0967, exclam ] }; + key <AE02> { [ 2, at, U0968, at ] }; + key <AE03> { [ 3, numbersign, U0969, numbersign ] }; + key <AE04> { [ 4, dollar, U096A, dollar ] }; + key <AE05> { [ 5, percent, U096B, percent ] }; + key <AE06> { [ 6, asciicircum, U096C, asciicircum ] }; + key <AE07> { [ 7, ampersand, U096D, ampersand ] }; + key <AE08> { [ 8, asterisk, U096E, asterisk ] }; + key <AE09> { [ 9, parenleft, U096F, parenleft ] }; + key <AE10> { [ 0, parenright, U0966, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + key <BKSL> { [ U0964, U0965, U007C, U005C ] }; //pipe : danda, double danda + + //Q Row + key <AD01> { [ U200C, U200D ] }; // Q: ZWNJ, ZWJ + key <AD02> { [ U0935, U950 ] }; // W: wa, OM + key <AD03> { [ U0947, U0948, U090F, U0910 ] }; // E: e, ai matras + key <AD04> { [ U0930, U0943 ] }; // R: ra, vocalic Ri + key <AD05> { [ U0924, U0925 ] }; // T: ta, tha + key <AD06> { [ U092f, U091E ] }; // Y: ya, nya + key <AD07> { [ U0941, U0942, U0909, U090A ] }; // U: u, uu matras + key <AD08> { [ U093F, U0940, U0907, U0908 ] }; // I: i, ii matras + key <AD09> { [ U094B, U094C, U0913, U0914 ] }; // O: o, au matras + key <AD10> { [ U092A, U092B ] }; // P: pa, pha + key <AD11> { [ bracketleft, braceleft ] }; + key <AD12> { [ bracketright, braceright ] }; + + //A Row + key <AC01> { [ U093E, U0906, U0905, U0906 ] }; // A: aa + key <AC02> { [ U0938, U0937 ] }; // S: sa, ssa + key <AC03> { [ U0926, U0927 ] }; // D: da, dha + key <AC04> { [ U091F, U0920 ] }; // F: TA, THA + key <AC05> { [ U0917, U0918 ] }; // G: ga, gha + key <AC06> { [ U0939, U0903 ] }; // H: ha, visarg + key <AC07> { [ U091C, U091D ] }; // J: ja, jha + key <AC08> { [ U0915, U0916 ] }; // K: ka, kha + key <AC09> { [ U0932, U0962 ] }; // L: la, vocalic L or lru matra` + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [apostrophe, quotedbl ] }; + + //Z Row + key <AB01> { [ U0936, U0945 ] }; // Z: sha, akaar candra + key <AB02> { [ U094D, U0949 ] }; // X: halant, aakaar candra + key <AB03> { [ U091A, U091B ] }; // C: ca, cha + key <AB04> { [ U0921, U0922 ] }; // V: da, dha + key <AB05> { [ U092C, U092D ] }; // B: ba, bha + key <AB06> { [ U0928, U0923 ] }; // N: na, nha + key <AB07> { [ U092E, U093D, U092E, U093D ] }; // M: ma, avagraha + key <AB08> { [ comma, U0970 ] };// comma: comma, dev abbreviation sign + key <AB09> { [ period, U093C ] }; // period: period, nukta + key <AB10> { [ slash, question ] }; + + // begin modifier mappings +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + include "level3(ralt_switch)" +}; + +// based on a keyboard map from an 'xkb/symbols/ben' file + +partial alphanumeric_keys +xkb_symbols "ben" { + name[Group1]= "India - Bengali"; + + // Mainly numbers. + key <AE01> { [ U09E7 ] }; + key <AE02> { [ U09E8 ] }; + key <AE03> { [ U09E9 ] }; + key <AE04> { [ U09EA ] }; + key <AE05> { [ U09EB ] }; + key <AE06> { [ U09EC ] }; + key <AE07> { [ U09ED ] }; + key <AE08> { [ U09EE ] }; + key <AE09> { [ U09EF, parenleft ] }; + key <AE10> { [ U09E6, parenright ] }; + key <AE11> { [ minus, U0983 ] }; + key <AE12> { [ U098B, U09C3 ] }; + +// Mainly long vowels + + key <AD01> { [ U09CC, U0994 ] }; + key <AD02> { [ U09C8, U0990 ] }; + key <AD03> { [ U09BE, U0986 ] }; + key <AD04> { [ U09C0, U0988 ] }; + key <AD05> { [ U09C2, U098A ] }; + +// Mainly voiced consonants + + key <AD06> { [ U09AC, U09AD ] }; + key <AD07> { [ U09B9, U0999 ] }; + key <AD08> { [ U0997, U0998 ] }; + key <AD09> { [ U09A6, U09A7 ] }; + key <AD10> { [ U099C, U099D ] }; + key <AD11> { [ U09A1, U09A2 ] }; + key <AD12> { [ U09BC, U099E ] }; + +// Mainly short vowels + key <AC01> { [ U09CB, U0993 ] }; + key <AC02> { [ U09C7, U098F ] }; + key <AC03> { [ U09CD, U0985 ] }; + key <AC04> { [ U09BF, U0987 ] }; + key <AC05> { [ U09C1, U0989 ] }; + + +// Mainly unvoiced consonants + + key <AC06> { [ U09AA, U09AB ] }; + key <AC07> { [ U09B0, U09DD ] }; + key <AC08> { [ U0995, U0996 ] }; + key <AC09> { [ U09A4, U09A5 ] }; + key <AC10> { [ U099A, U099B ] }; + key <AC11> { [ U099F, U09A0 ] }; + key <BKSL> { [ U005C, U007C ] }; + + key <AB01> { [ z, Z ] }; + key <AB02> { [ U0982, U0981 ] }; + key <AB03> { [ U09AE, U09A3 ] }; + key <AB04> { [ U09A8, U09A8 ] }; + key <AB05> { [ U09AC, U09AC ] }; + key <AB06> { [ U09B2, U09B2 ] }; + key <AB07> { [ U09B8, U09B6 ] }; + key <AB08> { [ comma, U09B7 ] }; + key <AB09> { [ period, U0964 ] }; + key <AB10> { [ U09DF, U09AF ] }; +}; + +xkb_symbols "ben_probhat" { + name[Group1]= "India - Bengali Probhat"; + key <ESC> { [ Escape ] }; + +// numbers + key <TLDE> { [ U200D, asciitilde ] }; + key <AE01> { [ U09E7, exclam ] }; + key <AE02> { [ U09E8, at ] }; + key <AE03> { [ U09E9, numbersign ] }; + key <AE04> { [ U09EA, U09F3 ] }; + key <AE05> { [ U09EB, percent ] }; + key <AE06> { [ U09EC, asciicircum ] }; + key <AE07> { [ U09ED, U099E ] }; + key <AE08> { [ U09EE, U09CE ] }; + key <AE09> { [ U09EF, parenleft ] }; + key <AE10> { [ U09E6, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + key <BKSP> { [ BackSpace ] }; + +// tab, q to ] + key <TAB> { [ Tab, ISO_Left_Tab ] }; + key <AD01> { [ U09A6, U09A7 ] }; + key <AD02> { [ U09C2, U098A ] }; + key <AD03> { [ U09C0, U0988 ] }; + key <AD04> { [ U09B0, U09DC ] }; + key <AD05> { [ U099F, U09A0 ] }; + key <AD06> { [ U098F, U0990 ] }; + key <AD07> { [ U09C1, U0989 ] }; + key <AD08> { [ U09BF, U0987 ] }; + key <AD09> { [ U0993, U0994 ] }; + key <AD10> { [ U09AA, U09AB ] }; + key <AD11> { [ U09C7, U09C8 ] }; + key <AD12> { [ U09CB, U09CC ] }; + key <RTRN> { [ Return ] }; + +// caps, a to ' +// key <CAPS> { [ Caps_Lock ] }; + key <AC01> { [ U09BE, U0985 ] }; + key <AC02> { [ U09B8, U09B7 ] }; + key <AC03> { [ U09A1, U09A2 ] }; + key <AC04> { [ U09A4, U09A5 ] }; + key <AC05> { [ U0997, U0998 ] }; + key <AC06> { [ U09B9, U0983 ] }; + key <AC07> { [ U099C, U099D ] }; + key <AC08> { [ U0995, U0996 ] }; + key <AC09> { [ U09B2, U0982 ] }; + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [ quoteright, quotedbl ] }; + +// shift, z to / +// key <LFSH> { [ Shift_L ] }; + key <AB01> { [ U09DF, U09AF ] }; + key <AB02> { [ U09B6, U09DD ] }; + key <AB03> { [ U099A, U099B ] }; + key <AB04> { [ U0986, U098B ] }; + key <AB05> { [ U09AC, U09AD ] }; + key <AB06> { [ U09A8, U09A3 ] }; + key <AB07> { [ U09AE, U0999 ] }; + key <AB08> { [ comma, U09C3 ] }; + key <AB09> { [ U0964, U0981 ] }; + key <AB10> { [ U09CD, question ] }; + key <BKSL> { [ U200C, U0965 ] }; + +// key <LCTL> { [ Control_L ] }; +// key <SPCE> { [ space ] }; + +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; + +}; + +partial alphanumeric_keys +xkb_symbols "guj" { + name[Group1]= "India - Gujarati"; + + // Mainly numbers. + key <AE01> { [ U0AE7, U0A8D ] }; + key <AE02> { [ U0AE8, U0AC5 ] }; + key <AE03> { [ U0AE9 ] }; + key <AE04> { [ U0AEA ] }; + key <AE05> { [ U0AEB ] }; + key <AE06> { [ U0AEC ] }; + key <AE07> { [ U0AED ] }; + key <AE08> { [ U0AEE ] }; + key <AE09> { [ U0AEF, parenleft ] }; + key <AE10> { [ U0AE6, parenright ] }; + key <AE11> { [ minus, U0A83 ] }; + key <AE12> { [ U0A8B, U0AC3 ] }; + +// Mainly long vowels + + key <AD01> { [ U0ACC, U0A94 ] }; + key <AD02> { [ U0AC8, U0A90 ] }; + key <AD03> { [ U0ABE, U0A86 ] }; + key <AD04> { [ U0AC0, U0A88 ] }; + key <AD05> { [ U0AC2, U0A8A ] }; + +// Mainly voiced consonants + + key <AD06> { [ U0AAC, U0AAD ] }; + key <AD07> { [ U0AB9, U0A99 ] }; + key <AD08> { [ U0A97, U0A98 ] }; + key <AD09> { [ U0AA6, U0AA7 ] }; + key <AD10> { [ U0A9C, U0A9D ] }; + key <AD11> { [ U0AA1, U0AA2 ] }; + key <AD12> { [ U0ABC, U0A9E ] }; + +// Mainly short vowels + key <AC01> { [ U0ACB, U0A93 ] }; + key <AC02> { [ U0AC7, U0A8F ] }; + key <AC03> { [ U0ACD, U0A85 ] }; + key <AC04> { [ U0ABF, U0A87 ] }; + key <AC05> { [ U0AC1, U0A89 ] }; + +// Mainly unvoiced consonants + + key <AC06> { [ U0AAA, U0AAB ] }; + key <AC07> { [ U0AB0, U0AB0 ] }; + key <AC08> { [ U0A95, U0A96 ] }; + key <AC09> { [ U0AA4, U0AA5 ] }; + key <AC10> { [ U0A9A, U0A9B ] }; + key <AC11> { [ U0A9F, U0AA0 ] }; + key <BKSL> { [ U0AC9, U0A91 ] }; + + key <AB01> { [ z , Z ] }; + key <AB02> { [ U0A82, U0A81 ] }; + key <AB03> { [ U0AAE, U0AA3 ] }; + key <AB04> { [ U0AA8, U0AA8 ] }; + key <AB05> { [ U0AB5, U0AB5 ] }; + key <AB06> { [ U0AB2, U0AB3 ] }; + key <AB07> { [ U0AB8, U0AB6 ] }; + key <AB08> { [ comma, U0AB7 ] }; + key <AB09> { [ period, U0964 ] }; + key <AB10> { [ U0AAF, question ] }; +}; + +partial alphanumeric_keys +xkb_symbols "kan" { + + // Inscript layout for Kannada + // Author : G Karunakar <karunakar@freedomink.org> + // Date : Wed Nov 13 17:22:58 IST 2002 + // Kannada digits mapped in basic only + + name[Group1]= "India - Kannada"; + + key <TLDE> { [ U0cca, U0c92 ] }; + key <AE01> { [ U0ce7 ] }; + key <AE02> { [ U0ce8 ] }; + key <AE03> { [ U0ce9 ] }; + key <AE04> { [ U0cea ] }; + key <AE05> { [ U0ceb ] }; + key <AE06> { [ U0cec ] }; + key <AE07> { [ U0ced ] }; + key <AE08> { [ U0cee ] }; + key <AE09> { [ U0cef ] }; + key <AE10> { [ U0ce6 ] }; + key <AE11> { [ U0c83 ] }; + key <AE12> { [ U0cc3, U0c8b ] }; + + key <AD01> { [ U0ccc, U0c94 ] }; + key <AD02> { [ U0cc8, U0c90 ] }; + key <AD03> { [ U0cbe, U0c86 ] }; + key <AD04> { [ U0cc0, U0c88 ] }; + key <AD05> { [ U0cc2, U0c8a ] }; + key <AD06> { [ U0cac, U0cad ] }; + key <AD07> { [ U0cb9, U0c99 ] }; + key <AD08> { [ U0c97, U0c98 ] }; + key <AD09> { [ U0ca6, U0ca7 ] }; + key <AD10> { [ U0c9c, U0c9d ] }; + key <AD11> { [ U0ca1, U0ca2 ] }; + key <AD12> { [ U0cbc, U0c9e ] }; + + key <AC01> { [ U0ccb, U0c93 ] }; + key <AC02> { [ U0cc7, U0c8f ] }; + key <AC03> { [ U0ccd, U0c85 ] }; + key <AC04> { [ U0cbf, U0c87 ] }; + key <AC05> { [ U0cc1, U0c89 ] }; + key <AC06> { [ U0caa, U0cab ] }; + key <AC07> { [ U0cb0, U0cb1 ] }; + key <AC08> { [ U0c95, U0c96 ] }; + key <AC09> { [ U0ca4, U0ca5 ] }; + key <AC10> { [ U0c9a, U0c9b ] }; + key <AC11> { [ U0c9f, U0ca0 ] }; + + key <AB01> { [ U0cc6, U0c8e ] }; + key <AB02> { [ U0c82 ] }; + key <AB03> { [ U0cae, U0ca3 ] }; + key <AB04> { [ U0ca8 ] }; + key <AB05> { [ U0cb5, U0cb4 ] }; + key <AB06> { [ U0cb2, U0cb3 ] }; + key <AB07> { [ U0cb8, U0cb6 ] }; + key <AB08> { [ comma , U0cb7 ] }; + key <AB09> { [ period ] }; + key <AB10> { [ U0caf, U0040 ] }; + + key <RALT> { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; + +}; + +// Description : A keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Baiju M <baiju@freeshell.org> +// Date : Sat Aug 17 21:10:48 IST 2002 +// Mapping: + +partial alphanumeric_keys +xkb_symbols "mal" { + + name[Group1] = "India - Malayalam"; + + //From grave to backslash (\) + + key <TLDE> { [ U0d4a , U0d12 ] }; + +// svu: +// These lines were in former "mal" variant - +// but the digits are replaced with the ones from 'mal_plusnum' - +// for the integrity of all Indian layouts +// +// key <AE01> { [1 , exclam ] }; +// key <AE02> { [2 , at ] }; +// key <AE03> { [3 , numbersign ] }; +// key <AE04> { [4 , dollar ] }; +// key <AE05> { [5 , percent ] }; +// key <AE06> { [6 ,asciicircum ] }; +// key <AE07> { [7 , ampersand ] }; +// key <AE08> { [8 , asterisk ] }; +// key <AE09> { [9 , parenleft ] }; +// key <AE10> { [0 , parenright ] }; + + key <AE01> { [ U0d67 , exclam ] }; + key <AE02> { [ U0d68 , at ] }; + key <AE03> { [ U0d69 , numbersign ] }; + key <AE04> { [ U0d6a , dollar ] }; + key <AE05> { [ U0d6b , percent ] }; + key <AE06> { [ U0d6c , asciicircum ] }; + key <AE07> { [ U0d6d , ampersand ] }; + key <AE08> { [ U0d6e , asterisk ] }; + key <AE09> { [ U0d6f , parenleft ] }; + key <AE10> { [ U0d66 , parenright ] }; + + key <AE11> { [ minus , U0d03 ] }; + key <AE12> { [ U0d43 , U0d0b ] }; + key <BKSL> { [U0200c, U05C ]};//bksl: ZWNJ + + + // From 'q' to right bracket (]) + + key <AD01> { [ U0d4c , U0d14 ] }; + key <AD02> { [ U0d48 , U0d10 ] }; + key <AD03> { [ U0d3e , U0d06 ] }; + key <AD04> { [ U0d40 , U0d08 ] }; + key <AD05> { [ U0d42 , U0d0a ] }; + key <AD06> { [ U0d2c , U0d2d ] }; + key <AD07> { [ U0d39 , U0d19 ] }; + key <AD08> { [ U0d17 , U0d18 ] }; + key <AD09> { [ U0d26 , U0d27 ] }; + key <AD10> { [ U0d1c , U0d1d ] }; + key <AD11> { [ U0d21 , U0d22 ] }; + key <AD12> { [ U0200d , U0d1e ] }; + + // From 'a' to apostrophe (') + + key <AC01> { [ U0d4b , U0d13 ] }; + key <AC02> { [ U0d47 , U0d0f ] }; + key <AC03> { [ U0d4d , U0d05 ] }; + key <AC04> { [ U0d3f , U0d07 ] }; + key <AC05> { [ U0d41 , U0d09 ] }; + key <AC06> { [ U0d2a , U0d2b ] }; + key <AC07> { [ U0d30 , U0d31 ] }; + key <AC08> { [ U0d15 , U0d16 ] }; + key <AC09> { [ U0d24 , U0d25 ] }; + key <AC10> { [ U0d1a , U0d1b ] }; + key <AC11> { [ U0d1f , U0d20 ] }; + + // From 'z' to slash (/) + + key <AB01> { [ U0d46 , U0d0e ] }; + key <AB02> { [ U0d02 , U200b ] };//X:ZWSP + key <AB03> { [ U0d2e , U0d23 ] }; + key <AB04> { [ U0d28 ] }; + key <AB05> { [ U0d35 , U0d34 ] }; + key <AB06> { [ U0d32 , U0d33 ] }; + key <AB07> { [ U0d38 , U0d36 ] }; + key <AB08> { [ comma , U0d37 ] }; + key <AB09> { [ period , U0200d ] }; + key <AB10> { [ U0d2f , question ] }; + +}; + +//Name : Lalitha +//Description : A transliteration keyboard layout for Malayalam +//Original Author : Noah Levitt<nlevitt at columbia.edu> +//Current Main : Jinesh K.J<jinesh.k@gmail.com>, Swathantra Malayalam Computing (SMC)<smc-discuss@googlegroups.com> + +partial alphanumeric_keys +xkb_symbols "mal_lalitha" { + name[Group1] = "India - Malayalam Lalitha"; + key.type="FOUR_LEVEL"; + //Top Alphanumeric row + // Roman digits + key <TLDE> { [ U0D4D, U0D02, apostrophe, asciitilde ] }; // apostrophe: virama(chandrakala),anusvara + key <AE01> { [ 1, exclam, U0D67, exclam ] }; + key <AE02> { [ 2, at, U0D68, at ] }; + key <AE03> { [ 3, numbersign, U0D69, numbersign ] }; + key <AE04> { [ 4, dollar, U0D6A, dollar ] }; + key <AE05> { [ 5, percent, U0D6B, percent ] }; + key <AE06> { [ 6, asciicircum, U0D6C, asciicircum ] }; + key <AE07> { [ 7, ampersand, U0D6D, ampersand ] }; + key <AE08> { [ 8, asterisk, U0D6E, asterisk ] }; + key <AE09> { [ 9, parenleft, U0D6F, parenleft ] }; + key <AE10> { [ 0, parenright, U0D66, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + key <BKSL> { [ U005C, U007C, U200C ] };//backslash:pipe,backslash,ZWNJ + + //Q Row + key <AD01> { [ U0D48, U0D4C, U0D10, U0D14 ] }; // Q: ai and au matras + key <AD02> { [ U0D35 ] }; // W: wa, OM + key <AD03> { [ U0D46, U0D47, U0D0E, U0D0F ] }; // E: e,ee matras + key <AD04> { [ U0D30, U0D31, U0D43, U0D0B ] }; // R: ra,rra, vocalic Ri + key <AD05> { [ U0D24, U0D25, U0D1F, U0D20 ] }; // T: tha, ttha,ta,tta + key <AD06> { [ U0D2f ] }; // Y: ya + key <AD07> { [ U0D41, U0D42, U0D09, U0D0A ] }; // U: u, uu matras + key <AD08> { [ U0D3F, U0D40, U0D07, U0D08 ] }; // I: i, ii matras + key <AD09> { [ U0D4A, U0D4B, U0D12, U0D13 ] }; // O: o, oo matras + key <AD10> { [ U0D2A ] }; // P: pa + key <AD11> { [ bracketleft, braceleft ] };//braceleft: + key <AD12> { [ bracketright, braceright ] };//braceright: + + //A Row + key <AC01> { [ U0D3E, U0D05, U0D06, U0D05 ] }; // A: a,aa + key <AC02> { [ U0D38, U0D37 ] }; // S: sa, ssa + key <AC03> { [ U0D26, U0D27, U0D21, U0D22 ] }; // D: soft da,soft dda,hard da,hard dda, + key <AC04> { [ U0D2B ] }; // F: pha + key <AC05> { [ U0D17, U0D18 ] }; // G: ga, gha + key <AC06> { [ U0D39, U0D03 ] }; // H: ha, visarg + key <AC07> { [ U0D1C, U0D1D ] }; // J: ja, jha + key <AC08> { [ U0D15, U0D16 ] }; // K: ka, kha + key <AC09> { [ U0D32, U0D33 ] }; // L: la, vocalic L or lru matra` + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [apostrophe, quotedbl ] }; + + //Z Row + key <AB01> { [ U0D34, U0D36 ] }; // Z: sha,zha + key <AB02> { [ U0D4D, U200B ] }; // X: chandrakala,ZWSP + key <AB03> { [ U0D1A, U0D1B ] }; // C: ca, cha + key <AB04> { [ U0D35, U200D ] }; // V: va,ZWJ + key <AB05> { [ U0D2C, U0D2D ] }; // B: ba, bha + key <AB06> { [ U0D28, U0D23, U0D19, U0D1E ] }; // N: na, hard na,nga,nha + key <AB07> { [ U0D2E, U0D02 ] }; // M: ma + key <AB08> { [ comma, U003C ] };// comma: comma + key <AB09> { [ period, U003E ] }; // period: period + key <AB10> { [ slash, question ] }; + + // begin modifier mappings +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + include "level3(ralt_switch)" +}; + + +partial alphanumeric_keys +xkb_symbols "ori" { + // Inscript layout for Oriya + // Author: G Karunakar <karunakar@freedomink.org> + // Date: Wed Nov 13 18:16:19 IST 2002 + + name[Group1]= "India - Oriya"; + + key <AE01> { [ U0b67 ] }; + key <AE02> { [ U0b68 ] }; + key <AE03> { [ U0b69 ] }; + key <AE04> { [ U0b6a ] }; + key <AE05> { [ U0b6b ] }; + key <AE06> { [ U0b6c ] }; + key <AE07> { [ U0b6d ] }; + key <AE08> { [ U0b6e ] }; + key <AE09> { [ U0b6f ] }; + key <AE10> { [ U0b66 ] }; + key <AE11> { [ U0b03 ] }; + key <AE12> { [ U0b43, U0b0b ] }; + + key <AD01> { [ U0b4c, U0b14 ] }; + key <AD02> { [ U0b48, U0b10 ] }; + key <AD03> { [ U0b3e, U0b06 ] }; + key <AD04> { [ U0b40, U0b08 ] }; + key <AD05> { [ U0b42, U0b0a ] }; + key <AD06> { [ U0b2c, U0b2d ] }; + key <AD07> { [ U0b39, U0b19 ] }; + key <AD08> { [ U0b17, U0b18 ] }; + key <AD09> { [ U0b26, U0b27 ] }; + key <AD10> { [ U0b1c, U0b1d ] }; + key <AD11> { [ U0b21, U0b22 ] }; + key <AD12> { [ U0b3c, U0b1e ] }; + + key <AC01> { [ U0b4b, U0b13 ] }; + key <AC02> { [ U0b47, U0b0f ] }; + key <AC03> { [ U0b4d, U0b05 ] }; + key <AC04> { [ U0b3f, U0b07 ] }; + key <AC05> { [ U0b41, U0b09 ] }; + key <AC06> { [ U0b2a, U0b2b ] }; + key <AC07> { [ U0b30 ] }; + key <AC08> { [ U0b15, U0b16 ] }; + key <AC09> { [ U0b24, U0b25 ] }; + key <AC10> { [ U0b1a, U0b1b ] }; + key <AC11> { [ U0b1f, U0b20 ] }; + + key <AB02> { [ U0b02, U0b01 ] }; + key <AB03> { [ U0b2e, U0b23 ] }; + key <AB04> { [ U0b28 ] }; + key <AB05> { [ U0b35 ] }; + key <AB06> { [ U0b32, U0b33 ] }; + key <AB07> { [ U0b38, U0b36 ] }; + key <AB08> { [ comma , U0b37 ] }; + key <AB09> { [ period ] }; + key <AB10> { [ U0b2f, U0040 ] }; + + key <RALT> { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; +}; + +// based on a keyboard map from an 'xkb/symbols/tml' file +// INSCRIPT +partial alphanumeric_keys +xkb_symbols "tam" { + name[Group1]= "India - Tamil"; + + key <TLDE> { [ U0BCA, U0B92 ] }; + + // Mainly numbers. + key <AE01> { [ U0BE7 ] }; + key <AE02> { [ U0BE8 ] }; + key <AE03> { [ U0BE9 ] }; + key <AE04> { [ U0BEA ] }; + key <AE05> { [ U0BEB ] }; + key <AE06> { [ U0BEC ] }; + key <AE07> { [ U0BED ] }; + key <AE08> { [ U0BEE ] }; + key <AE09> { [ U0BEF, parenleft ] }; + key <AE10> { [ U0BF0, parenright ] }; + key <AE11> { [ U0BF1, U0B83 ] }; + key <AE12> { [ U0BF2, plus ] }; + +// Mainly long vowels + + key <AD01> { [ U0BCC, U0B94 ] }; + key <AD02> { [ U0BC8, U0B90 ] }; + key <AD03> { [ U0BBE, U0B86 ] }; + key <AD04> { [ U0BC0, U0B88 ] }; + key <AD05> { [ U0BC2, U0B8A ] }; + +// Mainly voiced consonants + + key <AD07> { [ U0BB9, U0B99 ] }; + key <AD10> { [ U0B9c ] }; + key <AD12> { [ U0B9E ] }; + +// Mainly short vowels + key <AC01> { [ U0BCB, U0B93 ] }; + key <AC02> { [ U0BC7, U0B8F ] }; + key <AC03> { [ U0BCD, U0B85 ] }; + key <AC04> { [ U0BBF, U0B87 ] }; + key <AC05> { [ U0BC1, U0B89 ] }; + +// Mainly unvoiced consonants + + key <AC06> { [ U0BAA ] }; + key <AC07> { [ U0BB0, U0BB1 ] }; + key <AC08> { [ U0B95 ] }; + key <AC09> { [ U0BA4 ] }; + key <AC10> { [ U0B9A ] }; + key <AC11> { [ U0B9F ] }; + key <BKSL> { [ U005C, U007C ] };//backslash-bar - Changed to Unicode + + key <AB01> { [ U0BC6, U0B8E ] }; + key <AB02> { [ U0B82 ] }; + key <AB03> { [ U0BAE, U0BA3 ] }; + key <AB04> { [ U0BA8, U0BA9 ] }; + key <AB05> { [ U0BB5, U0BB4 ] }; + key <AB06> { [ U0BB2, U0BB3 ] }; + key <AB07> { [ U0BB8, U0BB6 ] }; + key <AB08> { [ comma, U0BB7 ] }; + key <AB09> { [ period, U0964 ] }; + key <AB10> { [ U0BAF, question ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tam_unicode" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: Unicode (http://www.unicode.org) +// Author: Thuraiappah Vaseeharan <vasee@ieee.org> +// Modifed by: Malathi S <malathiramya@gmail.com> +// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org> +// Date : Fri Sep 4 11:32:00 CST 2009 +// Mapping: + + name[Group1]= "India - Tamil Unicode"; + + // granthas + key <TLDE> { [ apostrophe, asciitilde ] }; + key <AE01> { [ U0031, exclam ] } ; + key <AE02> { [ U0032, at ] } ; + key <AE03> { [ U0033, numbersign ] } ; + key <AE04> { [ U0034, U0BF9 ] } ; + key <AE05> { [ U0035, percent ] } ; + key <AE06> { [ U0036, asciicircum ] } ; + key <AE07> { [ U0037, ampersand ] } ; + key <AE08> { [ U0038, asterisk ] } ; + key <AE09> { [ U0039, parenleft ] } ; + key <AE10> { [ U0030, parenright ] } ; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + + + // Qrow + key <AD01> { [ U0B9E, U0BB6 ] }; + key <AD02> { [ U0BB1, U0BB7 ] }; + key <AD03> { [ U0BA8, U0BB8 ] }; + key <AD04> { [ U0B9A, U0BB9 ] }; + key <AD05> { [ U0BB5, U0B9C ] }; + key <AD06> { [ U0BB2 ] }; + key <AD07> { [ U0BB0 ] }; + key <AD08> { [ U0BC8, U0B90 ] }; + key <AD09> { [ U0BCA, U0BCB ] }; + key <AD10> { [ U0BBF, U0BC0 ] }; + key <AD11> { [ U0BC1, U0BC2 ] }; + + // Arow + key <AC01> { [ U0BAF ] }; + key <AC02> { [ U0BB3 ] }; + key <AC03> { [ U0BA9 ] }; + key <AC04> { [ U0B95 ] }; + key <AC05> { [ U0BAA ] }; + key <AC06> { [ U0BBE, U0BB4 ] }; + key <AC07> { [ U0BA4 ] }; + key <AC08> { [ U0BAE ] }; + key <AC09> { [ U0B9F ] }; + key <AC10> { [ U0BCD, U0B83 ] }; + key <AC11> { [ U0B99 ] }; + + // Zrow + key <AB01> { [ U0BA3 ] }; + key <AB02> { [ U0B92, U0B93 ] }; + key <AB03> { [ U0B89, U0B8A ] }; + key <AB04> { [ U0B8E, U0B8F ] }; + key <AB05> { [ U0BC6, U0BC7 ] }; + key <AB06> { [ U0B94, U0BCC ] }; + key <AB07> { [ U0B85, U0B86 ] }; + key <AB08> { [ U0B87, U0B88 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tam_keyboard_with_numerals" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: Unicode (http://www.unicode.org) +// Author: Malathi S <malathiramya@gmail.com> +// Secondary contact: Sri Ramadoss M <amachu@au-kbc.org> +// Date : Fri Sep 4 11:33:00 CST 2009 +// Mapping: + + name[Group1]= "India - Tamil Keyboard with Numerals"; + + // Mainly numbers. + key <TLDE> { [ apostrophe, asciitilde ] }; + key <AE01> { [ U0BE7, exclam ] }; + key <AE02> { [ U0BE8, at ] }; + key <AE03> { [ U0BE9, numbersign ] }; + key <AE04> { [ U0BEA, U0BF9 ] }; + key <AE05> { [ U0BEB, percent ] }; + key <AE06> { [ U0BEC, asciicircum ] }; + key <AE07> { [ U0BED, ampersand ] }; + key <AE08> { [ U0BEE, asterisk ] }; + key <AE09> { [ U0BEF, parenleft ] }; + key <AE10> { [ U0BE6, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + + + // Qrow + key <AD01> { [ U0B9E, U0BB6 ] }; + key <AD02> { [ U0BB1, U0BB7 ] }; + key <AD03> { [ U0BA8, U0BB8 ] }; + key <AD04> { [ U0B9a, U0BB9 ] }; + key <AD05> { [ U0BB5, U0B9c ] }; + key <AD06> { [ U0BB2 ] }; + key <AD07> { [ U0BB0 ] }; + key <AD08> { [ U0BC8, U0B90 ] }; + key <AD09> { [ U0BCA, U0BCB ] }; + key <AD10> { [ U0BBF, U0BC0 ] }; + key <AD11> { [ U0BC1, U0BC2 ] }; + + // Arow + key <AC01> { [ U0BAF ] }; + key <AC02> { [ U0BB3 ] }; + key <AC03> { [ U0BA9 ] }; + key <AC04> { [ U0B95 ] }; + key <AC05> { [ U0BAA ] }; + key <AC06> { [ U0BBE, U0BB4 ] }; + key <AC07> { [ U0BA4 ] }; + key <AC08> { [ U0BAE ] }; + key <AC09> { [ U0B9F ] }; + key <AC10> { [ U0BCD, U0B83 ] }; + key <AC11> { [ U0B99 ] }; + + // Zrow + key <AB01> { [ U0BA3 ] }; + key <AB02> { [ U0B92, U0B93 ] }; + key <AB03> { [ U0B89, U0B8A ] }; + key <AB04> { [ U0B8E, U0B8F ] }; + key <AB05> { [ U0BC6, U0BC7 ] }; + key <AB06> { [ U0B94, U0BCC ] }; + key <AB07> { [ U0B85, U0B86 ] }; + key <AB08> { [ U0B87, U0B88 ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tam_TSCII" { + +// Description : A Tamil typewrite-style keymap +// loosely based on TamilNet'99 reommendations +// Encoding : TSCII (http://www.tscii.org) +// Author : Thuraiappah Vaseeharan <vasee@ieee.org> +// Last Modified: Sat Jan 5 17:11:26 CST 2002 + + name[Group1]= "India - Tamil TSCII Typewriter"; + + key <AE01> { [ 0x10000b7, 0x10000a4 ] }; // aytham + key <AE02> { [ 0x1000082, 0x10000a5 ] }; // shri + key <AE03> { [ 0x1000083, 0x1000088 ] }; // ja + key <AE04> { [ 0x1000084, 0x1000089 ] }; // sha + key <AE05> { [ 0x1000085, 0x100008a ] }; // sa + key <AE06> { [ 0x1000086, 0x100008b ] }; // ha + key <AE07> { [ 0x1000087, 0x100008c ] }; // ksha + + // Qrow + key <AD01> { [ 0x10000bb, 0x100009a ] }; // nja + key <AD02> { [ 0x10000c8, 0x10000da ] }; // Ra + key <AD03> { [ 0x10000bf, 0x10000d1 ] }; // NNa + key <AD04> { [ 0x10000ba, 0x10000cd ] }; // ca + key <AD05> { [ 0x10000c5, 0x10000d7 ] }; // va + key <AD06> { [ 0x10000c4, 0x10000d6 ] }; // la + key <AD07> { [ 0x10000c3, 0x10000d5 ] }; // ra + key <AD08> { [ 0x10000a8, 0x10000b3 ] }; // sangili, ai + key <AD09> { [ 0x10000ca, 0x10000cb ] }; // di, dI + key <AD10> { [ 0x10000a2, 0x10000a3 ] }; // visiri + key <AD11> { [ dead_acute, 0x10000a3 ] }; // Ukaaram + + // Arow + key <AC01> { [ 0x10000c2, 0x10000d4 ] }; // ya + key <AC02> { [ 0x10000c7, 0x10000d9 ] }; // La + key <AC03> { [ 0x10000c9, 0x10000db ] }; // na + key <AC04> { [ 0x10000b8, 0x10000cc ] }; // ka + key <AC05> { [ 0x10000c0, 0x10000d2 ] }; // pa + key <AC06> { [ dead_grave,0x10000a1 ] }; // pulli,aravu + key <AC07> { [ 0x10000be, 0x10000d0 ] }; // tha + key <AC08> { [ 0x10000c1, 0x10000d3 ] }; // ma + key <AC09> { [ 0x10000bc, 0x10000ce ] }; // da + key <AC10> { [ 0x10000c6, 0x10000d8 ] }; // zha + key <AC11> { [ 0x10000b9, 0x1000099 ] }; // nga + + // Zrow + key <AB01> { [ 0x10000bd, 0x10000cf ] }; // Na + key <AB02> { [ 0x10000b4, 0x10000b5 ] }; // o, O + key <AB03> { [ 0x10000af, 0x10000b0 ] }; // u, U + key <AB04> { [ 0x10000b1, 0x10000b2 ] }; // e, E + key <AB05> { [ 0x10000a6, 0x10000a7 ] }; // kombus + key <AB06> { [ 0x10000b6, 0x10000aa ] }; // au + key <AB07> { [ 0x10000ab, 0x10000ac ] }; // a, A + key <AB08> { [ 0x10000fe, 0x10000ae ] }; // i, I + +}; + +partial alphanumeric_keys +xkb_symbols "tam_TAB" { + +// Description: A keymap based on the TamilNet'99 typewriter keyboard +// Encoding: TAB (http://www.tamilnet99.org) +// Author: Thuraiappah Vaseeharan <t_vasee@yahoo.com> +// Date : Sun Aug 12 02:23:00 CDT 2001 + + name[Group1]= "India - Tamil TAB Typewriter"; + + // numeral row + key <AE01> { [ 0x10000e7, 0x10000a7 ] } ; + key <AE02> { [ 0x10000fa, 0x10000a8 ] } ; + key <AE03> { [ 0x10000fb ] } ; + key <AE04> { [ 0x10000fc ] } ; + key <AE05> { [ 0x10000fd ] } ; + key <AE06> { [ 0x10000fe ] } ; + key <AE07> { [ 0x10000ff ] } ; + + // q-row + key <AD01> { [ 0x10000eb, 0x10000b3 ] }; + key <AD02> { [ 0x10000f8, 0x10000c1 ] }; + key <AD03> { [ 0x10000ef, 0x10000b8 ] }; + key <AD04> { [ 0x10000ea, 0x10000b2 ] }; + key <AD05> { [ 0x10000f5, 0x10000be ] }; + key <AD06> { [ 0x10000f4, 0x10000bd ] }; + key <AD07> { [ 0x10000f3, 0x10000bc ] }; + key <AD08> { [ 0x10000ac, 0x10000e4 ] }; + key <AD09> { [ 0x10000ae, 0x10000af ] }; + key <AD10> { [ 0x10000a4, 0x10000a6 ] }; + key <AD11> { [ dead_circumflex, 0x10000a6 ] }; // Ukaaram + + // a-row + key <AC01> { [ 0x10000f2, 0x10000bb ] }; + key <AC02> { [ 0x10000f7, 0x10000c0 ] }; + key <AC03> { [ 0x10000f9, 0x10000c2 ] }; + key <AC04> { [ 0x10000e8, 0x10000b0 ] }; + key <AC05> { [ 0x10000f0, 0x10000b9 ] }; + key <AC06> { [ 0x10000a2, 0x10000a3 ] }; + key <AC07> { [ 0x10000ee, 0x10000b6 ] }; + key <AC08> { [ 0x10000f1, 0x10000ba ] }; + key <AC09> { [ 0x10000ec, 0x10000b4 ] }; + key <AC10> { [ 0x10000f6, 0x10000bf ] }; + key <AC11> { [ 0x10000e9, 0x10000b1 ] }; + + // z-row + key <AB01> { [ 0x10000ed, 0x10000b5 ] }; + key <AB02> { [ 0x10000e5, 0x10000e6 ] }; + key <AB03> { [ 0x10000e0, 0x10000e1 ] }; + key <AB04> { [ 0x10000e2, 0x10000e3 ] }; + key <AB05> { [ 0x10000aa, 0x10000ab ] }; + key <AB06> { [ 0x10000ac, 0x10000a3 ] }; + key <AB07> { [ 0x10000dc, 0x10000dd ] }; + key <AB08> { [ 0x10000de, 0x10000df ] }; +}; + +partial alphanumeric_keys +xkb_symbols "tel" { + + // Inscript layout for Telugu using Unicode + // Author: G Karunakar <karunakar@freedomink.org> + // Date: + // See layout at http://www.indlinux.org/keymap/telugu.php + + name[Group1]= "India - Telugu"; + + key <TLDE> { [ U0c4a, U0c12 ] }; + key <AE01> { [ U0c67 ] }; + key <AE02> { [ U0c68 ] }; + key <AE03> { [ U0c69, numbersign ] }; + key <AE04> { [ U0c6a, dollar ] }; + key <AE05> { [ U0c6b, percent ] }; + key <AE06> { [ U0c6c, asciicircum ] }; + key <AE07> { [ U0c6d, ampersand ] }; + key <AE08> { [ U0c6e, asterisk ] }; + key <AE09> { [ U0c6f, parenleft ] }; + key <AE10> { [ U0c66, parenright ] }; + key <AE11> { [ U0c03, underscore ] }; + key <AE12> { [ U0c43, U0c0b ] }; + key <BKSP> { [ BackSpace ] }; + + key <AD01> { [ U0c4c, U0c14 ] }; + key <AD02> { [ U0c48, U0c10 ] }; + key <AD03> { [ U0c3e, U0c06 ] }; + key <AD04> { [ U0c40, U0c08 ] }; + key <AD05> { [ U0c42, U0c0a ] }; + key <AD06> { [ U0c2c, U0c2d ] }; + key <AD07> { [ U0c39, U0c19 ] }; + key <AD08> { [ U0c17, U0c18 ] }; + key <AD09> { [ U0c26, U0c27 ] }; + key <AD10> { [ U0c1c, U0c1d ] }; + key <AD11> { [ U0c21, U0c22 ] }; + key <AD12> { [ U0c1e ] }; + + key <AC01> { [ U0c4b, U0c13 ] }; + key <AC02> { [ U0c47, U0c0f ] }; + key <AC03> { [ U0c4d, U0c05 ] }; + key <AC04> { [ U0c3f, U0c07 ] }; + key <AC05> { [ U0c41, U0c09 ] }; + key <AC06> { [ U0c2a, U0c2b ] }; + key <AC07> { [ U0c30, U0c31 ] }; + key <AC08> { [ U0c15, U0c16 ] }; + key <AC09> { [ U0c24, U0c25 ] }; + key <AC10> { [ U0c1a, U0c1b ] }; + key <AC11> { [ U0c1f, U0c20 ] }; + + key <AB01> { [ U0c46, U0c0e ] }; + key <AB02> { [ U0c02, U0c01 ] }; + key <AB03> { [ U0c2e, U0c23 ] }; + key <AB04> { [ U0c28 ] }; + key <AB05> { [ U0c35 ] }; + key <AB06> { [ U0c32, U0c33 ] }; + key <AB07> { [ U0c38, U0c36 ] }; + key <AB08> { [ comma , U0c37 ] }; + key <AB09> { [ period ] }; + key <AB10> { [ U0c2f, U0040 ] }; + + key <RALT> { + symbols[Group1] = [ Mode_switch, Multi_key ], + virtualMods = AltGr + }; +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic" { + include "pk(urd-phonetic)" + name[Group1]= "India - Urdu, Phonetic"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-phonetic3" { + include "pk(urd-crulp)" + name[Group1]= "India - Urdu, Alternative phonetic"; +}; + +partial alphanumeric_keys +xkb_symbols "urd-winkeys" { + include "pk(urd-nla)" + name[Group1]= "India - Urdu, Winkeys"; +}; + +// based on a keyboard map from an 'xkb/symbols/gur' file + +partial alphanumeric_keys +xkb_symbols "guru" { + name[Group1]= "India - Gurmukhi"; + + // Mainly numbers. + key <AE01> { [ U0A67 ] }; + key <AE02> { [ U0A68 ] }; + key <AE03> { [ U0A69, U0A71 ] }; + key <AE04> { [ U0A6A, U0A74 ] }; + key <AE05> { [ U0A6B, U262C ] }; + key <AE06> { [ U0A6C ] }; + key <AE07> { [ U0A6D ] }; + key <AE08> { [ U0A6e ] }; + key <AE09> { [ U0A6F, parenleft ] }; + key <AE10> { [ U0A66, parenright ] }; + key <AE11> { [ gur_visarga ] }; + key <AE12> { [ equal, plus ] }; + +// Mainly long vowels + + key <AD01> { [ U0A4C, U0A14 ] }; + key <AD02> { [ U0A48, U0A10 ] }; + key <AD03> { [ U0A3E, U0A06 ] }; + key <AD04> { [ U0A40, U0A08 ] }; + key <AD05> { [ U0A42, U0A0A ] }; + +// Mainly voiced consonants + + key <AD06> { [ U0A2C, U0A2D ] }; + key <AD07> { [ U0A39, U0A19 ] }; + key <AD08> { [ U0A17, U0A18 ] }; + key <AD09> { [ U0A26, U0A27 ] }; + key <AD10> { [ U0A1C, U0A1D ] }; + key <AD11> { [ U0A21, U0A22 ] }; + key <AD12> { [ U0A3C, U0A1E ] }; + +// Mainly short vowels + key <AC01> { [ U0A4B, U0A13 ] }; + key <AC02> { [ U0A47, U0A0F ] }; + key <AC03> { [ U0A4D, U0A05 ] }; + key <AC04> { [ U0A3F, U0A07 ] }; + key <AC05> { [ U0A41, U0A09 ] }; + +// Mainly unvoiced consonants + + key <AC06> { [ U0A2A, U0A2B ] }; + key <AC07> { [ U0A30, U0A5C ] }; + key <AC08> { [ U0A15, U0A16 ] }; + key <AC09> { [ U0A24, U0A25 ] }; + key <AC10> { [ U0A1A, U0A1B ] }; + key <AC11> { [ U0A1F, U0A20 ] }; + key <BKSL> { [ U005C, U007C ] }; + + key <AB01> { [ z, U0A01 ] }; + key <AB02> { [ U0A02, U0A70, U0A71 ] }; + key <AB03> { [ U0A2E, U0A23 ] }; + key <AB04> { [ U0A28, U0A28 ] }; + key <AB05> { [ U0A35, U0A35 ] }; + key <AB06> { [ U0A32, U0A33 ] }; + key <AB07> { [ U0A38, U0A36 ] }; + key <AB08> { [ comma, less ] }; + key <AB09> { [ period, U0964 ] }; + key <AB10> { [ U0A2F, question ] }; +}; + +//Name : Jhelum (Refind Inscript) +//Description : A Jhelum keyboard layout for Gurmukhi (Punjabi) +// http://www.satluj.org/Jhelum.html +//Modified for Inscript to make +//Original Author : Amanpreet Singh Alam <apreet.alam@gmail.com + +partial alphanumeric_keys +xkb_symbols "jhelum" { + name[Group1] = "India - Gurmukhi Jhelum"; + key.type="FOUR_LEVEL"; + //Top Alphanumeric row + // Roman digits + key <TLDE> { [ apostrophe, asciitilde, U0A02,U0A01 ] }; // apostrophe: anusvara, candrabindu + key <AE01> { [ 1,exclam, U0A67, exclam ] }; + key <AE02> { [ 2,at, U0A68, at ] }; + key <AE03> { [ 3,numbersign, U0A69, numbersign ] }; + key <AE04> { [ 4,dollar, U0A6A, dollar ] }; + key <AE05> { [ 5,percent,U0A6B, percent ] }; + key <AE06> { [ 6,asciicircum, U0A6C,asciicircum ] }; + key <AE07> { [ 7,ampersand,U0A6D,ampersand ] }; + key <AE08> { [ 8,asterisk,U0A6E, asterisk ] }; + key <AE09> { [ 9,parenleft,U0A6F,parenleft ] }; + key <AE10> { [ 0,parenright,U0A66,parenright ] }; + key <AE11> { [ minus,underscore] }; + key <AE12> { [ equal,plus] }; + key <BKSL> { [ U0964,U0965,U007C,U005C] }; //pipe : danda, double danda + + //Q Row + key <AD01> { [ U0A4C, U0A14 ] }; // Q: oo, ooh + key <AD02> { [ U0A48, U0A10 ] }; // W: ee, ae + key <AD03> { [ U0A3E, U0A06 ] }; // E: a, aa + key <AD04> { [ U0A40, U0A08 ] }; // R: ee, ai + key <AD05> { [ U0A42, U0A0A ] }; // T: u, uu + key <AD06> { [ U0A30, U0A5C ] }; // Y: ra, raa + key <AD07> { [ U0A26, U0A27 ] }; // U: tha, thha + key <AD08> { [ U0A17, U0A18 ] }; // I:ga, gha + key <AD09> { [ U0A24, U0A1F ] }; // O: ta, tha + key <AD10> { [ U0A2A, U0A5E ] }; // P: pa, pha + key <AD11> { [ U0A21, U0A22, bracketleft, braceleft ] }; + key <AD12> { [ U0A19, U0A1E, bracketright, braceright ] }; + + //A Row + key <AC01> { [ U0A4B, U0A13 ] }; // A: o, oo + key <AC02> { [ U0A40, U0A0F ] }; // S: e, ee + key <AC03> { [ U0A4D, U0A05 ] }; // D: halant, aa + key <AC04> { [ U0A3F, U0A07 ] }; // F: i, aa + key <AC05> { [ U0A41, U0A09 ] }; // G: u, uh + key <AC06> { [ U0A39, U0A20 ] }; // H: ha, thha + key <AC07> { [ U0A1C, U0A1D ] }; // J: ja, jha + key <AC08> { [ U0A15, U0A16 ] }; // K: ka, kha + key <AC09> { [ U0A32, U0A25 ] }; // L: la, tha + key <AC10> { [ U0A38, semicolon, colon ] }; //; sa + key <AC11> { [apostrophe, quotedbl ] }; + + //Z Row + key <AB01> { [ U0A71, U0A3C ] }; // Z: addak, par bindi + key <AB02> { [ U0A02, U0A70 ] }; // X: bindi, tippi + key <AB03> { [ U0A1A, U0A1B ] }; // C: ca, cha + key <AB04> { [ U0A35, U0A2F ] }; // V: va, ya + key <AB05> { [ U0A2C, U0A2D ] }; // B: ba, bha + key <AB06> { [ U0A28, U0A23 ] }; // N: na, nha + key <AB07> { [ U0A2E, U0A2E ] }; // M: ma + key <AB08> { [ comma, U262C ] };// comma: comma, dev abbreviation sign + key <AB09> { [ period, U0A74 ] }; // period: period, nukta + key <AB10> { [ slash, question ] }; + +// begin modifier mappings +// modifier_map Shift { Shift_L }; +// modifier_map Lock { Caps_Lock }; +// modifier_map Control{ Control_L }; +// modifier_map Mod3 { Mode_switch }; + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "olpc" { + +// Contact: Walter Bender <walter@laptop.org> + + include "in(deva)" + key <TLDE> { [ U094A, U0912 ] }; // DEVANAGARI VOWEL SIGN SHORT O; DEVANAGARI LETTER SHORT O + key <AE01> { [ U0967, U090D ] }; // DEVANAGARI DIGIT ONE; DEVANAGARI LETTER CANDRA E + key <AE02> { [ U0968, U0945 ] }; // DEVANAGARI DIGIT TWO; DEVANAGARI VOWEL SIGN CANDRA E + key <AE03> { [ U0969 ] }; // DEVANAGARI DIGIT THREE; + key <AE04> { [ U096A ] }; // DEVANAGARI DIGIT FOUR; + key <AE05> { [ U096B ] }; // DEVANAGARI DIGIT FIVE; + key <AE06> { [ U096C ] }; // DEVANAGARI DIGIT SIX; + key <AE07> { [ U096D ] }; // DEVANAGARI DIGIT SEVEN; + key <AE08> { [ U096E ] }; // DEVANAGARI DIGIT EIGHT; + key <AE09> { [ U096F, parenleft ] }; // DEVANAGARI DIGIT NINE; + key <AE10> { [ U0966, parenright ] }; // DEVANAGARI DIGIT ZERO; + key <AE11> { [ minus, U0903 ] }; // DEVANAGARI SIGN VISARGA; + key <AE12> { [ U0943, U090B ] }; // DEVANAGARI VOWEL SIGN VOCALIC R; DEVANAGARI LETTER VOCALIC R + + key <AD01> { [ U094C, U0914 ] }; // DEVANAGARI VOWEL SIGN AU; DEVANAGARI LETTER AU + key <AD02> { [ U0948, U0910 ] }; // DEVANAGARI VOWEL SIGN AI; DEVANAGARI LETTER AI + key <AD03> { [ U093E, U0906 ] }; // DEVANAGARI VOWEL SIGN AA; DEVANAGARI LETTER AA + key <AD04> { [ U0940, U0908 ] }; // DEVANAGARI VOWEL SIGN II; DEVANAGARI LETTER II + key <AD05> { [ U0942, U090A ] }; // DEVANAGARI VOWEL SIGN UU; DEVANAGARI LETTER UU + key <AD06> { [ U092C, U092D ] }; // DEVANAGARI LETTER BA; DEVANAGARI LETTER BHA + key <AD07> { [ U0939, U0919 ] }; // DEVANAGARI LETTER HA; DEVANAGARI LETTER NGA + key <AD08> { [ U0917, U0918 ] }; // DEVANAGARI LETTER GA; DEVANAGARI LETTER GHA + key <AD09> { [ U0926, U0927 ] }; // DEVANAGARI LETTER DA; DEVANAGARI LETTER DHA + key <AD10> { [ U091C, U091D ] }; // DEVANAGARI LETTER JA; DEVANAGARI LETTER JHA + key <AD11> { [ U0921, U0922 ] }; // DEVANAGARI LETTER DDA; DEVANAGARI LETTER DDHA + key <AD12> { [ U093C, U091E ] }; // DEVANAGARI SIGN NUKTA; DEVANAGARI LETTER NYA + + key <BKSL> { [ U0949, U0911 ] }; // DEVANAGARI VOWEL SIGN CANDRA O; DEVANAGARI LETTER CANDRA O + + key <AC01> { [ U094B, U0913 ] }; // DEVANAGARI VOWEL SIGN O; DEVANAGARI LETTER O + key <AC02> { [ U0947, U090F ] }; // DEVANAGARI VOWEL SIGN E; DEVANAGARI LETTER E + key <AC03> { [ U094D, U0905 ] }; // DEVANAGARI SIGN VIRAMA; DEVANAGARI LETTER A + key <AC04> { [ U093F, U0907 ] }; // DEVANAGARI VOWEL SIGN I; DEVANAGARI LETTER I + key <AC05> { [ U0941, U0909 ] }; // DEVANAGARI VOWEL SIGN U; DEVANAGARI LETTER U + key <AC06> { [ U092A, U092B ] }; // DEVANAGARI LETTER PA; DEVANAGARI LETTER PHA + key <AC07> { [ U0930, U0931 ] }; // DEVANAGARI LETTER RA; DEVANAGARI LETTER RRA + key <AC08> { [ U0915, U0916 ] }; // DEVANAGARI LETTER KA; DEVANAGARI LETTER KHA + key <AC09> { [ U0924, U0925 ] }; // DEVANAGARI LETTER TA; DEVANAGARI LETTER THA + key <AC10> { [ U091A, U091B ] }; // DEVANAGARI LETTER CA; DEVANAGARI LETTER CHA + key <AC11> { [ U091F, U0920 ] }; // DEVANAGARI LETTER TTA; DEVANAGARI LETTER TTHA + + key <AB01> { [ U0946, U090E ] }; // DEVANAGARI VOWEL SIGN SHORT E; DEVANAGARI LETTER SHORT E + key <AB02> { [ U0902, U0901 ] }; // DEVANAGARI SIGN ANUSVARA; DEVANAGARI SIGN CANDRABINDU + key <AB03> { [ U092E, U0923 ] }; // DEVANAGARI LETTER MA; DEVANAGARI LETTER NNA + key <AB04> { [ U0928, U0929 ] }; // DEVANAGARI LETTER NA; DEVANAGARI LETTER NNNA + key <AB05> { [ U0935, U0934 ] }; // DEVANAGARI LETTER VA; DEVANAGARI LETTER LLLA + key <AB06> { [ U0932, U0933 ] }; // DEVANAGARI LETTER LA; DEVANAGARI LETTER LLA + key <AB07> { [ U0938, U0936 ] }; // DEVANAGARI LETTER SA; DEVANAGARI LETTER SHA + key <AB08> { [ comma, U0937 ] }; // DEVANAGARI LETTER SSA + key <AB09> { [ period, U0964 ] }; // DEVANAGARI DANDA + key <AB10> { [ U092F, U095F ] }; // DEVANAGARI LETTER YA; DEVANAGARI LETTER YYA + + // space, space, Zero-Width-Non-Joiner (ZWNJ), Zero-Width-Joiner (ZWJ): + include "nbsp(zwnj3zwj4)" + + include "group(olpc)" +}; + +partial alphanumeric_keys +xkb_symbols "hin-wx" { + + name[Group1]= "India - Hindi Wx"; + + key <TLDE> { [ grave, asciitilde, 2, 3 ] }; + + key <AE01> { [ 0x1000967, exclam ] }; + key <AE02> { [ 0x1000968, at ] }; + key <AE03> { [ 0x1000969 , numbersign ] }; + key <AE04> { [ 0x100096A , dollar ] }; + key <AE05> { [ 0x100096B , percent ] }; + key <AE06> { [ 0x100096C , asciicircum ] }; + key <AE07> { [ 0x100096D , ampersand ] }; + key <AE08> { [ 0x100096e , asterisk ] }; + key <AE09> { [ 0x100096F, parenleft ] }; + key <AE10> { [ 0x1000966, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + + + key <AD01> { [ 0x1000943, 0x1000944, 0x100090B, 0x1000960] }; + key <AD02> { [ 0x1000924, 0x1000925 ] }; + key <AD03> { [ 0x1000947, 0x1000948, 0x100090F, 0x1000910] }; + key <AD04> { [ 0x1000930, 0x1000937 ] }; + key <AD05> { [ 0x100091F, 0x1000920 ] }; + + + key <AD06> { [ 0x100092F ] }; + key <AD07> { [ 0x1000941, 0x1000942, 0x1000909, 0x100090A ] }; + key <AD08> { [ 0x100093F, 0x1000940, 0x1000907, 0x1000908 ] }; + key <AD09> { [ 0x100094B, 0x100094C, 0x1000913, 0x1000914] }; + key <AD10> { [ 0x100092A, 0x100092B ] }; + key <AD11> { [ bracketleft, braceleft ] }; + key <AD12> { [ bracketright, braceright ] }; + key <BKSL> { [ backslash, bar, 0x1000964, 0x1000965 ] }; + + key <AC01> { [ 0x100094D, 0x100093E, 0x1000905,0x1000906 ] }; + key <AC02> { [ 0x1000938, 0x1000936 ] }; + key <AC03> { [ 0x1000921, 0x1000922 ] }; + key <AC04> { [ 0x1000919, 0x100091E ] }; + key <AC05> { [ 0x1000917, 0x1000918 ] }; + + + key <AC06> { [ 0x1000939, 0x1000903 ] }; + key <AC07> { [ 0x100091C, 0x100091D ] }; + key <AC08> { [ 0x1000915, 0x1000916 ] }; + key <AC09> { [ 0x1000932, 0x1000962, 0x1000933, 0x100090C] }; + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [ quoteright, quotedbl ] }; + + key <AB01> { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] }; + key <AB02> { [ 0x1000926, 0x1000927 ] }; + key <AB03> { [ 0x100091A, 0x100091B ] }; + key <AB04> { [ 0x1000935, dead_V ] }; + key <AB05> { [ 0x100092C, 0x100092D ] }; + key <AB06> { [ 0x1000928, 0x1000923 ] }; + key <AB07> { [ 0x100092E, 0x1000902 ] }; + key <AB08> { [ comma, less ] }; + key <AB09> { [ period, greater ] }; + key <AB10> { [ slash, question ] }; + + include "level3(ralt_switch)" +}; + +partial alphanumeric_keys +xkb_symbols "eng" { + + name[Group1]= "India - English with RupeeSign"; + + include "us(basic)" + + include "rupeesign(4)" + + include "level3(ralt_switch)" +}; + + +// Description : Enhanced INSCRIPT keymap for Malayalam +// Encoding : Unicode (http://www.unicode.org) +// Author : Mahesh T Pai <paivakil@gmail.com> +// Date : March, 2011 +// Source : http://www.nongnu.org/smc/docs/images/ml_inscript_layout.jpg +// Comment : Based on the Inscript Keyboard created by M Baiju +// Mapping: + +partial alphanumeric_keys +xkb_symbols "mal_enhanced" { + + name[Group1] = "India - Malayalam Modified Inscript with Rupee Sign"; + + //From grave to backslash (\) + + key <TLDE> { [ U0d4a , U0d12 ] }; + key <AE01> { [ U0d67 , exclam ] }; + key <AE02> { [ U0d68 , at ] }; + key <AE03> { [ U0d69 , numbersign ] }; + key <AE04> { [ U0d6a , dollar ] }; + key <AE05> { [ U0d6b , percent ] }; + key <AE06> { [ U0d6c , asciicircum ] }; + key <AE07> { [ U0d6d , ampersand ] }; + key <AE08> { [ U0d6e , U0d7e ] }; + key <AE09> { [ U0d6f , parenleft ] }; + key <AE10> { [ U0d66 , parenright ] }; + + key <AE11> { [ minus , U0d03 ] }; + key <AE12> { [ U0d43 , U0d0b ] }; + key <BKSL> { [ U0d7c , U05C ] }; //bksl: chillu RR + + + // From 'q' to right bracket (]) + + key <AD01> { [ U0d57 , U0d14 ] }; + key <AD02> { [ U0d48 , U0d10 ] }; + key <AD03> { [ U0d3e , U0d06 ] }; + key <AD04> { [ U0d40 , U0d08 ] }; + key <AD05> { [ U0d42 , U0d0a ] }; + key <AD06> { [ U0d2c , U0d2d ] }; + key <AD07> { [ U0d39 , U0d19 ] }; + key <AD08> { [ U0d17 , U0d18 ] }; + key <AD09> { [ U0d26 , U0d27 ] }; + key <AD10> { [ U0d1c , U0d1d ] }; + key <AD11> { [ U0d21 , U0d22 ] }; + key <AD12> { [ U0200d , U0d1e ] }; + + // From 'a' to apostrophe (') + + key <AC01> { [ U0d4b , U0d13 ] }; + key <AC02> { [ U0d47 , U0d0f ] }; + key <AC03> { [ U0d4d , U0d05 ] }; + key <AC04> { [ U0d3f , U0d07 ] }; + key <AC05> { [ U0d41 , U0d09 ] }; + key <AC06> { [ U0d2a , U0d2b ] }; + key <AC07> { [ U0d30 , U0d31 ] }; + key <AC08> { [ U0d15 , U0d16 ] }; + key <AC09> { [ U0d24 , U0d25 ] }; + key <AC10> { [ U0d1a , U0d1b ] }; + key <AC11> { [ U0d1f , U0d20 ] }; + + // From 'z' to slash (/) + + key <AB01> { [ U0d46 , U0d0e ] }; + key <AB02> { [ U0d02 , U0d7a ] }; + key <AB03> { [ U0d2e , U0d23 ] }; + key <AB04> { [ U0d28 , U0d7b ] }; + key <AB05> { [ U0d35 , U0d34 ] }; + key <AB06> { [ U0d32 , U0d33 ] }; + key <AB07> { [ U0d38 , U0d36 ] }; + key <AB08> { [ comma , U0d37 ] }; + key <AB09> { [ period , U0d7d ] }; //chillu l + key <AB10> { [ U0d2f , question ] }; + + // hope this includes the rupee sign at alt + 4 + + include "rupeesign(4)" + include "level3(ralt_switch)" + +}; + |