diff options
author | marha <marha@users.sourceforge.net> | 2013-09-30 08:58:27 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-09-30 08:58:27 +0200 |
commit | a12cf779e828ec70da714832e1eaa730119fe10c (patch) | |
tree | dc99a80ba8d23ac18d2a33ebaa4cbdeef65ffb72 | |
parent | 14718f10dcda487178690de9a51cc5acdf21e468 (diff) | |
download | vcxsrv-a12cf779e828ec70da714832e1eaa730119fe10c.tar.gz vcxsrv-a12cf779e828ec70da714832e1eaa730119fe10c.tar.bz2 vcxsrv-a12cf779e828ec70da714832e1eaa730119fe10c.zip |
git update fontconfig mesa libXau pixman xkeyboard-config 30 Sep 2013
xkeyboard-config commit fe5c2416314fd1df423c8ce53cac2d28b00420e7
libXau commit 304a11be4727c5a7feeb2501e8e001466f8ce84e
pixman commit b513b3dffe979056dbbbdc8e0659f8018c51c5f5
fontconfig commit 9161ed1e4a3f4afaee6dbcfc0b84a279ad99b397
mesa commit 868791f0baa0b51f4255c839448d3ca87ab1aa35
104 files changed, 2111 insertions, 1568 deletions
diff --git a/fontconfig/Makefile.am b/fontconfig/Makefile.am index d310b4b62..2b949e439 100644 --- a/fontconfig/Makefile.am +++ b/fontconfig/Makefile.am @@ -90,12 +90,14 @@ $(srcdir)/ChangeLog: .PHONY: ChangeLog +FC_CONFIGDIR = $(subst $(BASECONFIGDIR)/,,$(CONFIGDIR)) + fonts.conf: fonts.conf.in Makefile sed \ -e 's,@FC_CACHEDIR\@,$(FC_CACHEDIR),g' \ -e 's,@FC_DEFAULT_FONTS\@,$(FC_DEFAULT_FONTS),g' \ -e 's,@FC_FONTPATH\@,$(FC_FONTPATH),g' \ - -e 's,@CONFIGDIR\@,$(CONFIGDIR),g' \ + -e 's,@CONFIGDIR\@,$(FC_CONFIGDIR),g' \ -e 's,@PACKAGE\@,$(PACKAGE),g' \ -e 's,@VERSION\@,$(VERSION),g' \ $(srcdir)/$@.in > $@.tmp && \ diff --git a/fontconfig/conf.d/Makefile.am b/fontconfig/conf.d/Makefile.am index e1fab5061..d61756b81 100644 --- a/fontconfig/conf.d/Makefile.am +++ b/fontconfig/conf.d/Makefile.am @@ -45,7 +45,7 @@ CONF_LINKS = \ EXTRA_DIST = $(template_DATA) $(DOC_SOURCES) CLEANFILES = $(DOC_FILES) -configdir=$(CONFIGDIR) +configdir = $(CONFIGDIR) config_DATA = $(DOC_FILES) templatedir = $(TEMPLATEDIR) diff --git a/fontconfig/configure.ac b/fontconfig/configure.ac index 952e73766..4b631bd53 100644 --- a/fontconfig/configure.ac +++ b/fontconfig/configure.ac @@ -588,7 +588,7 @@ no|yes) esac case "$configdir" in no|yes) - configdir='${baseconfigdir}'/conf.d + configdir='${BASECONFIGDIR}'/conf.d ;; *) ;; @@ -605,13 +605,9 @@ TEMPLATEDIR=${templatedir} BASECONFIGDIR=${baseconfigdir} CONFIGDIR=${configdir} XMLDIR=${xmldir} -AC_SUBST(templatedir) AC_SUBST(TEMPLATEDIR) -AC_SUBST(baseconfigdir) AC_SUBST(BASECONFIGDIR) -AC_SUBST(configdir) AC_SUBST(CONFIGDIR) -AC_SUBST(xmldir) AC_SUBST(XMLDIR) diff --git a/fontconfig/src/fcarch.c b/fontconfig/src/fcarch.c index 21516ff05..398f4bbfc 100644 --- a/fontconfig/src/fcarch.c +++ b/fontconfig/src/fcarch.c @@ -23,10 +23,6 @@ #include <stdio.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "fcint.h" #include "fcarch.h" diff --git a/fontconfig/src/fccache.c b/fontconfig/src/fccache.c index e02d49e8f..3568595ed 100644 --- a/fontconfig/src/fccache.c +++ b/fontconfig/src/fccache.c @@ -20,9 +20,6 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "fcint.h" #include "fcarch.h" #include <stdio.h> diff --git a/fontconfig/src/fccompat.c b/fontconfig/src/fccompat.c index d4f88c83f..1c2ba8bed 100644 --- a/fontconfig/src/fccompat.c +++ b/fontconfig/src/fccompat.c @@ -25,10 +25,6 @@ * PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include "fcint.h" #include <errno.h> diff --git a/fontconfig/src/fchash.c b/fontconfig/src/fchash.c index 7216beead..38300028c 100644 --- a/fontconfig/src/fchash.c +++ b/fontconfig/src/fchash.c @@ -23,9 +23,6 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "fcint.h" #include <stdio.h> #include <string.h> diff --git a/fontconfig/src/fcstat.c b/fontconfig/src/fcstat.c index ab56aca66..ff8e88455 100644 --- a/fontconfig/src/fcstat.c +++ b/fontconfig/src/fcstat.c @@ -20,9 +20,6 @@ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include "fcint.h" #include "fcarch.h" #include <dirent.h> diff --git a/libXau/AuFileName.c b/libXau/AuFileName.c index 090427387..7cedfcc5b 100644 --- a/libXau/AuFileName.c +++ b/libXau/AuFileName.c @@ -66,12 +66,14 @@ XauFileName (void) return NULL; } size = strlen (name) + strlen(&slashDotXauthority[1]) + 2; - if (size > bsize) { + if ((size > bsize) || (buf == NULL)) { if (buf) free (buf); buf = malloc (size); - if (!buf) + if (!buf) { + bsize = 0; return NULL; + } if (!atexit_registered) { atexit(free_filename_buffer); diff --git a/mesalib/configure.ac b/mesalib/configure.ac index 4c99603cc..1f0a646a6 100644 --- a/mesalib/configure.ac +++ b/mesalib/configure.ac @@ -1344,10 +1344,7 @@ AC_ARG_WITH([clang-libdir], [CLANG_LIBDIR="$withval"], [CLANG_LIBDIR=""]) -LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc` -LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc` -AC_SUBST([LIBCLC_INCLUDEDIR]) -AC_SUBST([LIBCLC_LIBEXECDIR]) +PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no]) if test "x$enable_opencl" = xyes; then if test "x$with_gallium_drivers" = x; then @@ -1358,8 +1355,16 @@ if test "x$enable_opencl" = xyes; then AC_MSG_ERROR([gcc >= 4.6 is required to build clover]) fi - if test "x$LIBCLC_INCLUDEDIR" == x || test "x$LIBCLC_LIBEXECDIR" == x; then - AC_MSG_ERROR([pkg-config cannot use libclc.pc which is required to build clover]) + if test "x$have_libclc" = xno; then + AC_MSG_ERROR([pkg-config cannot find libclc.pc which is required to build clover. + Make sure the directory containing libclc.pc is specified in your + PKG_CONFIG_PATH environment variable. + By default libclc.pc is installed to /usr/local/share/pkgconfig/]) + else + LIBCLC_INCLUDEDIR=`pkg-config --variable=includedir libclc` + LIBCLC_LIBEXECDIR=`pkg-config --variable=libexecdir libclc` + AC_SUBST([LIBCLC_INCLUDEDIR]) + AC_SUBST([LIBCLC_LIBEXECDIR]) fi GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover" @@ -1767,7 +1772,7 @@ if test "x$with_gallium_drivers" != x; then PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) gallium_require_llvm "Gallium R300" GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" - gallium_check_st "radeon/drm" "dri-r300" "" "" "xvmc-r300" "vdpau-r300" + gallium_check_st "radeon/drm" "r300/dri" "" "" "r300/xvmc" "r300/vdpau" ;; xr600) HAVE_GALLIUM_R600=yes @@ -1785,7 +1790,7 @@ if test "x$with_gallium_drivers" != x; then if test "x$enable_opencl" = xyes; then LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser" fi - gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" + gallium_check_st "radeon/drm" "r600/dri" "r600/xorg" "" "r600/xvmc" "r600/vdpau" ;; xradeonsi) HAVE_GALLIUM_RADEONSI=yes @@ -1793,7 +1798,7 @@ if test "x$with_gallium_drivers" != x; then gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi" radeon_llvm_check - gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi" "" "" "vdpau-radeonsi" "" + gallium_check_st "radeon/drm" "radeonsi/dri" "radeonsi/xorg" "" "" "radeonsi/vdpau" "" ;; xnouveau) HAVE_GALLIUM_NOUVEAU=yes @@ -2032,9 +2037,6 @@ AC_CONFIG_FILES([Makefile src/gallium/targets/dri-i915/Makefile src/gallium/targets/dri-ilo/Makefile src/gallium/targets/dri-nouveau/Makefile - src/gallium/targets/dri-r300/Makefile - src/gallium/targets/dri-r600/Makefile - src/gallium/targets/dri-radeonsi/Makefile src/gallium/targets/dri-swrast/Makefile src/gallium/targets/dri-vmwgfx/Makefile src/gallium/targets/egl-static/Makefile @@ -2043,21 +2045,24 @@ AC_CONFIG_FILES([Makefile src/gallium/targets/osmesa/Makefile src/gallium/targets/osmesa/osmesa.pc src/gallium/targets/pipe-loader/Makefile + src/gallium/targets/radeonsi/dri/Makefile + src/gallium/targets/radeonsi/vdpau/Makefile + src/gallium/targets/radeonsi/xorg/Makefile + src/gallium/targets/r300/dri/Makefile + src/gallium/targets/r300/vdpau/Makefile + src/gallium/targets/r300/xvmc/Makefile + src/gallium/targets/r600/dri/Makefile + src/gallium/targets/r600/vdpau/Makefile + src/gallium/targets/r600/xorg/Makefile + src/gallium/targets/r600/xvmc/Makefile src/gallium/targets/libgl-xlib/Makefile src/gallium/targets/vdpau-nouveau/Makefile - src/gallium/targets/vdpau-r300/Makefile - src/gallium/targets/vdpau-r600/Makefile - src/gallium/targets/vdpau-radeonsi/Makefile src/gallium/targets/vdpau-softpipe/Makefile src/gallium/targets/xa-vmwgfx/Makefile src/gallium/targets/xa-vmwgfx/xatracker.pc src/gallium/targets/xorg-i915/Makefile src/gallium/targets/xorg-nouveau/Makefile - src/gallium/targets/xorg-r600/Makefile - src/gallium/targets/xorg-radeonsi/Makefile src/gallium/targets/xvmc-nouveau/Makefile - src/gallium/targets/xvmc-r300/Makefile - src/gallium/targets/xvmc-r600/Makefile src/gallium/targets/xvmc-softpipe/Makefile src/gallium/tests/trivial/Makefile src/gallium/tests/unit/Makefile diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index 2316cf8e5..0859d9e00 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -2842,7 +2842,7 @@ ast_declarator_list::hir(exec_list *instructions, * any extension that adds the 'layout' keyword. */ if (!state->is_version(130, 300) - && !state->ARB_explicit_attrib_location_enable + && !state->has_explicit_attrib_location() && !state->ARB_fragment_coord_conventions_enable) { if (this->type->qualifier.flags.q.out) { _mesa_glsl_error(& loc, state, diff --git a/mesalib/src/glsl/glsl_parser.yy b/mesalib/src/glsl/glsl_parser.yy index fa6e2053a..912931a47 100644 --- a/mesalib/src/glsl/glsl_parser.yy +++ b/mesalib/src/glsl/glsl_parser.yy @@ -1200,7 +1200,7 @@ layout_qualifier_id: } /* See also interface_block_layout_qualifier. */ - if (!$$.flags.i && state->ARB_uniform_buffer_object_enable) { + if (!$$.flags.i && state->has_uniform_buffer_objects()) { if (strcmp($1, "std140") == 0) { $$.flags.q.std140 = 1; } else if (strcmp($1, "shared") == 0) { @@ -1262,7 +1262,7 @@ layout_qualifier_id: { memset(& $$, 0, sizeof($$)); - if (state->ARB_explicit_attrib_location_enable) { + if (state->has_explicit_attrib_location()) { if (strcmp("location", $1) == 0) { $$.flags.q.explicit_location = 1; @@ -1328,7 +1328,7 @@ layout_qualifier_id: { $$ = $1; /* Layout qualifiers for ARB_uniform_buffer_object. */ - if ($$.flags.q.uniform && !state->ARB_uniform_buffer_object_enable) { + if ($$.flags.q.uniform && !state->has_uniform_buffer_objects()) { _mesa_glsl_error(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " "layout qualifier `%s' is used", $1); @@ -2138,7 +2138,7 @@ basic_interface_block: block->declarations.push_degenerate_list_at_head(& $4->link); if ($1.flags.q.uniform) { - if (!state->ARB_uniform_buffer_object_enable) { + if (!state->has_uniform_buffer_objects()) { _mesa_glsl_error(& @1, state, "#version 140 / GL_ARB_uniform_buffer_object " "required for defining uniform blocks"); diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp index cac5a18e4..e9922fc14 100644 --- a/mesalib/src/glsl/glsl_parser_extras.cpp +++ b/mesalib/src/glsl/glsl_parser_extras.cpp @@ -299,14 +299,6 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, break; } } - - if (this->language_version >= 140) { - this->ARB_uniform_buffer_object_enable = true; - } - - if (this->language_version == 300 && this->es_shader) { - this->ARB_explicit_attrib_location_enable = true; - } } extern "C" { diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h index 364a98345..cef4436f6 100644 --- a/mesalib/src/glsl/glsl_parser_extras.h +++ b/mesalib/src/glsl/glsl_parser_extras.h @@ -121,6 +121,16 @@ struct _mesa_glsl_parse_state { return check_version(130, 300, locp, "bit-wise operations are forbidden"); } + bool has_explicit_attrib_location() const + { + return ARB_explicit_attrib_location_enable || is_version(330, 300); + } + + bool has_uniform_buffer_objects() const + { + return ARB_uniform_buffer_object_enable || is_version(140, 300); + } + void process_version_directive(YYLTYPE *locp, int version, const char *ident); diff --git a/mesalib/src/mapi/glapi/gen/AMD_performance_monitor.xml b/mesalib/src/mapi/glapi/gen/AMD_performance_monitor.xml new file mode 100644 index 000000000..b96b263db --- /dev/null +++ b/mesalib/src/mapi/glapi/gen/AMD_performance_monitor.xml @@ -0,0 +1,87 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_AMD_performance_monitor" number="360"> + + <function name="GetPerfMonitorGroupsAMD" offset="assign"> + <param name="numGroups" type="GLint *"/> + <param name="groupsSize" type="GLsizei"/> + <param name="groups" type="GLuint *"/> + </function> + + <function name="GetPerfMonitorCountersAMD" offset="assign"> + <param name="group" type="GLuint"/> + <param name="numCounters" type="GLint *"/> + <param name="maxActiveCounters" type="GLint *"/> + <param name="countersSize" type="GLsizei"/> + <param name="counters" type="GLuint *"/> + </function> + + <function name="GetPerfMonitorGroupStringAMD" offset="assign"> + <param name="group" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="groupString" type="GLchar *"/> + </function> + + <function name="GetPerfMonitorCounterStringAMD" offset="assign"> + <param name="group" type="GLuint"/> + <param name="counter" type="GLuint"/> + <param name="bufSize" type="GLsizei"/> + <param name="length" type="GLsizei *"/> + <param name="counterString" type="GLchar *"/> + </function> + + <function name="GetPerfMonitorCounterInfoAMD" offset="assign"> + <param name="group" type="GLuint"/> + <param name="counter" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="data" type="GLvoid *"/> + </function> + + <function name="GenPerfMonitorsAMD" offset="assign"> + <param name="n" type="GLsizei"/> + <param name="monitors" type="GLuint *"/> + </function> + + <function name="DeletePerfMonitorsAMD" offset="assign"> + <param name="n" type="GLsizei"/> + <param name="monitors" type="GLuint *"/> + </function> + + <function name="SelectPerfMonitorCountersAMD" offset="assign"> + <param name="monitor" type="GLuint"/> + <param name="enable" type="GLboolean"/> + <param name="group" type="GLuint"/> + <param name="numCounters" type="GLint"/> + <param name="counterList" type="GLuint *"/> + </function> + + <function name="BeginPerfMonitorAMD" offset="assign"> + <param name="monitor" type="GLuint"/> + </function> + + <function name="EndPerfMonitorAMD" offset="assign"> + <param name="monitor" type="GLuint"/> + </function> + + <function name="GetPerfMonitorCounterDataAMD" offset="assign"> + <param name="monitor" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="dataSize" type="GLsizei"/> + <param name="data" type="GLuint *"/> + <param name="bytesWritten" type="GLint *"/> + </function> + + <enum name="COUNTER_TYPE_AMD" value="0x8BC0"/> + <enum name="COUNTER_RANGE_AMD" value="0x8BC1"/> + <enum name="UNSIGNED_INT64_AMD" value="0x8BC2"/> + <enum name="PECENTAGE_AMD" value="0x8BC3"/> + <enum name="PERFMON_RESULT_AVAILABLE_AMD" value="0x8BC4"/> + <enum name="PERFMON_RESULT_SIZE_AMD" value="0x8BC5"/> + <enum name="PERFMON_RESULT_AMD" value="0x8BC6"/> +</category> + +</OpenGLAPI> diff --git a/mesalib/src/mapi/glapi/gen/Makefile.am b/mesalib/src/mapi/glapi/gen/Makefile.am index d4fbd3511..9b9b99505 100644 --- a/mesalib/src/mapi/glapi/gen/Makefile.am +++ b/mesalib/src/mapi/glapi/gen/Makefile.am @@ -115,6 +115,7 @@ API_XML = \ ARB_texture_storage.xml \ ARB_vertex_array_object.xml \ AMD_draw_buffers_blend.xml \ + AMD_performance_monitor.xml \ ARB_vertex_type_2_10_10_10_rev.xml \ APPLE_object_purgeable.xml \ APPLE_vertex_array_object.xml \ diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml index 71aa9a7bd..f6511e987 100644 --- a/mesalib/src/mapi/glapi/gen/gl_API.xml +++ b/mesalib/src/mapi/glapi/gen/gl_API.xml @@ -12890,6 +12890,8 @@ <enum name="FRAMEBUFFER_SRGB_CAPABLE_EXT" value="0x8DBA"/> </category> +<xi:include href="AMD_performance_monitor.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + <category name="GL_APPLE_texture_range" number="367"> <enum name="TEXTURE_STORAGE_HINT_APPLE" count="1" value="0x85BC"> <size name="TexParameteriv"/> diff --git a/mesalib/src/mapi/glapi/gen/gl_genexec.py b/mesalib/src/mapi/glapi/gen/gl_genexec.py index be82f9089..a074c2348 100644 --- a/mesalib/src/mapi/glapi/gen/gl_genexec.py +++ b/mesalib/src/mapi/glapi/gen/gl_genexec.py @@ -82,6 +82,7 @@ header = """/** #include "main/matrix.h" #include "main/multisample.h" #include "main/objectlabel.h" +#include "main/performance_monitor.h" #include "main/pixel.h" #include "main/pixelstore.h" #include "main/points.h" diff --git a/mesalib/src/mesa/Android.libmesa_dricore.mk b/mesalib/src/mesa/Android.libmesa_dricore.mk index 00c06943c..3679b50ba 100644 --- a/mesalib/src/mesa/Android.libmesa_dricore.mk +++ b/mesalib/src/mesa/Android.libmesa_dricore.mk @@ -49,9 +49,6 @@ ifeq ($(TARGET_ARCH),x86) endif # x86 endif # MESA_ENABLE_ASM -LOCAL_CFLAGS := \ - $(patsubst %,-DFEATURE_%=1,$(MESA_ENABLED_APIS)) - LOCAL_C_INCLUDES := \ $(call intermediates-dir-for STATIC_LIBRARIES,libmesa_program,,) \ $(MESA_TOP)/src/mapi \ diff --git a/mesalib/src/mesa/Makefile.sources b/mesalib/src/mesa/Makefile.sources index 122ea8e3a..ff242b4ab 100644 --- a/mesalib/src/mesa/Makefile.sources +++ b/mesalib/src/mesa/Makefile.sources @@ -65,6 +65,7 @@ MAIN_FILES = \ $(SRCDIR)main/objectlabel.c \ $(SRCDIR)main/pack.c \ $(SRCDIR)main/pbo.c \ + $(SRCDIR)main/performance_monitor.c \ $(SRCDIR)main/pixel.c \ $(SRCDIR)main/pixelstore.c \ $(SRCDIR)main/pixeltransfer.c \ diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript index 2cdb79c46..9b7712faf 100644 --- a/mesalib/src/mesa/SConscript +++ b/mesalib/src/mesa/SConscript @@ -97,6 +97,7 @@ main_sources = [ 'main/objectlabel.c', 'main/pack.c', 'main/pbo.c', + 'main/performance_monitor.c', 'main/pixel.c', 'main/pixelstore.c', 'main/pixeltransfer.c', diff --git a/mesalib/src/mesa/drivers/dri/Android.mk b/mesalib/src/mesa/drivers/dri/Android.mk index 88629531a..9adf0b386 100644 --- a/mesalib/src/mesa/drivers/dri/Android.mk +++ b/mesalib/src/mesa/drivers/dri/Android.mk @@ -32,9 +32,6 @@ MESA_DRI_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/dri MESA_DRI_MODULE_UNSTRIPPED_PATH := $(TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED)/dri MESA_DRI_CFLAGS := \ - -DFEATURE_GL=1 \ - -DFEATURE_ES1=1 \ - -DFEATURE_ES2=1 \ -DHAVE_ANDROID_PLATFORM MESA_DRI_C_INCLUDES := \ diff --git a/mesalib/src/mesa/main/context.c b/mesalib/src/mesa/main/context.c index 58f42cc5b..310518c92 100644 --- a/mesalib/src/mesa/main/context.c +++ b/mesalib/src/mesa/main/context.c @@ -105,6 +105,7 @@ #include "macros.h" #include "matrix.h" #include "multisample.h" +#include "performance_monitor.h" #include "pixel.h" #include "pixelstore.h" #include "points.h" @@ -764,6 +765,7 @@ init_attrib_groups(struct gl_context *ctx) _mesa_init_lighting( ctx ); _mesa_init_matrix( ctx ); _mesa_init_multisample( ctx ); + _mesa_init_performance_monitors( ctx ); _mesa_init_pixel( ctx ); _mesa_init_pixelstore( ctx ); _mesa_init_point( ctx ); diff --git a/mesalib/src/mesa/main/core.h b/mesalib/src/mesa/main/core.h index 0ba0db8a3..73ed01c25 100644 --- a/mesalib/src/mesa/main/core.h +++ b/mesalib/src/mesa/main/core.h @@ -31,8 +31,7 @@ * The public header of core mesa. * * This file is the (only) public header of core mesa. It is supposed to be - * used by GLX, WGL, and GLSL. It is important that headers directly or - * indirectly included here do not perform feature tests (#if FEATURE_xxx). + * used by GLX, WGL, and GLSL. */ diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h index c1d9b2c95..0806e41a0 100644 --- a/mesalib/src/mesa/main/dd.h +++ b/mesalib/src/mesa/main/dd.h @@ -645,6 +645,30 @@ struct dd_function_table { void (*WaitQuery)(struct gl_context *ctx, struct gl_query_object *q); /*@}*/ + /** + * \name Performance monitors + */ + /*@{*/ + struct gl_perf_monitor_object * (*NewPerfMonitor)(struct gl_context *ctx); + void (*DeletePerfMonitor)(struct gl_context *ctx, + struct gl_perf_monitor_object *m); + GLboolean (*BeginPerfMonitor)(struct gl_context *ctx, + struct gl_perf_monitor_object *m); + + /** Stop an active performance monitor, discarding results. */ + void (*ResetPerfMonitor)(struct gl_context *ctx, + struct gl_perf_monitor_object *m); + void (*EndPerfMonitor)(struct gl_context *ctx, + struct gl_perf_monitor_object *m); + GLboolean (*IsPerfMonitorResultAvailable)(struct gl_context *ctx, + struct gl_perf_monitor_object *m); + void (*GetPerfMonitorResult)(struct gl_context *ctx, + struct gl_perf_monitor_object *m, + GLsizei dataSize, + GLuint *data, + GLint *bytesWritten); + /*@}*/ + /** * \name Vertex Array objects diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index 34615e3e0..eb9362059 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -291,6 +291,7 @@ static const struct extension extension_table[] = { { "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 }, { "GL_AMD_conservative_depth", o(ARB_conservative_depth), GL, 2009 }, { "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 }, + { "GL_AMD_performance_monitor", o(AMD_performance_monitor), GL, 2007 }, { "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 }, { "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 }, { "GL_AMD_vertex_shader_layer", o(AMD_vertex_shader_layer), GL, 2012 }, diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index 448946c03..d82672dc9 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -34,6 +34,8 @@ #define MTYPES_H +#include <stdint.h> /* uint32_t */ + #include "main/glheader.h" #include "main/config.h" #include "glapi/glapi.h" @@ -1778,6 +1780,89 @@ struct gl_transform_feedback_state /** + * A "performance monitor" as described in AMD_performance_monitor. + */ +struct gl_perf_monitor_object +{ + GLboolean Active; + + /** + * A list of groups with currently active counters. + * + * ActiveGroups[g] == n if there are n counters active from group 'g'. + */ + unsigned *ActiveGroups; + + /** + * An array of bitsets, subscripted by group ID, then indexed by counter ID. + * + * Checking whether counter 'c' in group 'g' is active can be done via: + * + * BITSET_TEST(ActiveCounters[g], c) + */ + GLuint **ActiveCounters; +}; + + +union gl_perf_monitor_counter_value +{ + float f; + uint64_t u64; + uint32_t u32; +}; + + +struct gl_perf_monitor_counter +{ + /** Human readable name for the counter. */ + const char *Name; + + /** + * Data type of the counter. Valid values are FLOAT, UNSIGNED_INT, + * UNSIGNED_INT64_AMD, and PERCENTAGE_AMD. + */ + GLenum Type; + + /** Minimum counter value. */ + union gl_perf_monitor_counter_value Minimum; + + /** Maximum counter value. */ + union gl_perf_monitor_counter_value Maximum; +}; + + +struct gl_perf_monitor_group +{ + /** Human readable name for the group. */ + const char *Name; + + /** + * Maximum number of counters in this group which can be active at the + * same time. + */ + GLuint MaxActiveCounters; + + /** Array of counters within this group. */ + const struct gl_perf_monitor_counter *Counters; + GLuint NumCounters; +}; + + +/** + * Context state for AMD_performance_monitor. + */ +struct gl_perf_monitor_state +{ + /** Array of performance monitor groups (indexed by group ID) */ + const struct gl_perf_monitor_group *Groups; + GLuint NumGroups; + + /** The table of all performance monitors. */ + struct _mesa_HashTable *Monitors; +}; + + +/** * Names of the various vertex/fragment program register files, etc. * * NOTE: first four tokens must fit into 2 bits (see t_vb_arbprogram.c) @@ -3176,6 +3261,7 @@ struct gl_extensions GLboolean EXT_vertex_array_bgra; GLboolean OES_standard_derivatives; /* vendor extensions */ + GLboolean AMD_performance_monitor; GLboolean AMD_seamless_cubemap_per_texture; GLboolean AMD_vertex_shader_layer; GLboolean APPLE_object_purgeable; @@ -3639,6 +3725,8 @@ struct gl_context struct gl_transform_feedback_state TransformFeedback; + struct gl_perf_monitor_state PerfMonitor; + struct gl_buffer_object *CopyReadBuffer; /**< GL_ARB_copy_buffer */ struct gl_buffer_object *CopyWriteBuffer; /**< GL_ARB_copy_buffer */ diff --git a/mesalib/src/mesa/main/performance_monitor.c b/mesalib/src/mesa/main/performance_monitor.c new file mode 100644 index 000000000..8dfa8261e --- /dev/null +++ b/mesalib/src/mesa/main/performance_monitor.c @@ -0,0 +1,609 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file performance_monitor.c + * Core Mesa support for the AMD_performance_monitor extension. + * + * In order to implement this extension, start by defining two enums: + * one for Groups, and one for Counters. These will be used as indexes into + * arrays, so they should start at 0 and increment from there. + * + * Counter IDs need to be globally unique. That is, you can't have counter 7 + * in group A and counter 7 in group B. A global enum of all available + * counters is a convenient way to guarantee this. + */ + +#include <stdbool.h> +#include "glheader.h" +#include "context.h" +#include "enums.h" +#include "hash.h" +#include "macros.h" +#include "mtypes.h" +#include "performance_monitor.h" +#include "bitset.h" +#include "ralloc.h" + +void +_mesa_init_performance_monitors(struct gl_context *ctx) +{ + ctx->PerfMonitor.Monitors = _mesa_NewHashTable(); + ctx->PerfMonitor.NumGroups = 0; + ctx->PerfMonitor.Groups = NULL; +} + +static struct gl_perf_monitor_object * +new_performance_monitor(struct gl_context *ctx, GLuint index) +{ + unsigned i; + struct gl_perf_monitor_object *m = ctx->Driver.NewPerfMonitor(ctx); + + if (m == NULL) + return NULL; + + m->ActiveGroups = + rzalloc_array(NULL, unsigned, ctx->PerfMonitor.NumGroups); + + m->ActiveCounters = + ralloc_array(NULL, BITSET_WORD *, ctx->PerfMonitor.NumGroups); + + if (m->ActiveGroups == NULL || m->ActiveCounters == NULL) + goto fail; + + for (i = 0; i < ctx->PerfMonitor.NumGroups; i++) { + const struct gl_perf_monitor_group *g = &ctx->PerfMonitor.Groups[i]; + + m->ActiveCounters[i] = rzalloc_array(m->ActiveCounters, BITSET_WORD, + BITSET_WORDS(g->NumCounters)); + if (m->ActiveCounters[i] == NULL) + goto fail; + } + + return m; + +fail: + ralloc_free(m->ActiveGroups); + ralloc_free(m->ActiveCounters); + ctx->Driver.DeletePerfMonitor(ctx, m); + return NULL; +} + +static inline struct gl_perf_monitor_object * +lookup_monitor(struct gl_context *ctx, GLuint id) +{ + return (struct gl_perf_monitor_object *) + _mesa_HashLookup(ctx->PerfMonitor.Monitors, id); +} + +static inline const struct gl_perf_monitor_group * +get_group(const struct gl_context *ctx, GLuint id) +{ + if (id >= ctx->PerfMonitor.NumGroups) + return NULL; + + return &ctx->PerfMonitor.Groups[id]; +} + +static inline const struct gl_perf_monitor_counter * +get_counter(const struct gl_perf_monitor_group *group_obj, GLuint id) +{ + if (id >= group_obj->NumCounters) + return NULL; + + return &group_obj->Counters[id]; +} + +/*****************************************************************************/ + +void GLAPIENTRY +_mesa_GetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, + GLuint *groups) +{ + GET_CURRENT_CONTEXT(ctx); + + if (numGroups != NULL) + *numGroups = ctx->PerfMonitor.NumGroups; + + if (groupsSize > 0 && groups != NULL) { + unsigned i; + unsigned n = MIN2(groupsSize, ctx->PerfMonitor.NumGroups); + + /* We just use the index in the Groups array as the ID. */ + for (i = 0; i < n; i++) + groups[i] = i; + } +} + +void GLAPIENTRY +_mesa_GetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, + GLint *maxActiveCounters, + GLsizei countersSize, GLuint *counters) +{ + GET_CURRENT_CONTEXT(ctx); + const struct gl_perf_monitor_group *group_obj = get_group(ctx, group); + if (group_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCountersAMD(invalid group)"); + return; + } + + if (maxActiveCounters != NULL) + *maxActiveCounters = group_obj->MaxActiveCounters; + + if (numCounters != NULL) + *numCounters = group_obj->NumCounters; + + if (counters != NULL) { + unsigned i; + unsigned n = MIN2(group_obj->NumCounters, countersSize); + for (i = 0; i < n; i++) { + /* We just use the index in the Counters array as the ID. */ + counters[i] = i; + } + } +} + +void GLAPIENTRY +_mesa_GetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, + GLsizei *length, GLchar *groupString) +{ + GET_CURRENT_CONTEXT(ctx); + + const struct gl_perf_monitor_group *group_obj = get_group(ctx, group); + + if (group_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetPerfMonitorGroupStringAMD"); + return; + } + + if (bufSize == 0) { + /* Return the number of characters that would be required to hold the + * group string, excluding the null terminator. + */ + if (length != NULL) + *length = strlen(group_obj->Name); + } else { + if (length != NULL) + *length = MIN2(strlen(group_obj->Name), bufSize); + if (groupString != NULL) + strncpy(groupString, group_obj->Name, bufSize); + } +} + +void GLAPIENTRY +_mesa_GetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, + GLsizei bufSize, GLsizei *length, + GLchar *counterString) +{ + GET_CURRENT_CONTEXT(ctx); + + const struct gl_perf_monitor_group *group_obj; + const struct gl_perf_monitor_counter *counter_obj; + + group_obj = get_group(ctx, group); + + if (group_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCounterStringAMD(invalid group)"); + return; + } + + counter_obj = get_counter(group_obj, counter); + + if (counter_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCounterStringAMD(invalid counter)"); + return; + } + + if (bufSize == 0) { + /* Return the number of characters that would be required to hold the + * counter string, excluding the null terminator. + */ + if (length != NULL) + *length = strlen(counter_obj->Name); + } else { + if (length != NULL) + *length = MIN2(strlen(counter_obj->Name), bufSize); + if (counterString != NULL) + strncpy(counterString, counter_obj->Name, bufSize); + } +} + +void GLAPIENTRY +_mesa_GetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, + GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + + const struct gl_perf_monitor_group *group_obj; + const struct gl_perf_monitor_counter *counter_obj; + + group_obj = get_group(ctx, group); + + if (group_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCounterInfoAMD(invalid group)"); + return; + } + + counter_obj = get_counter(group_obj, counter); + + if (counter_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCounterInfoAMD(invalid counter)"); + return; + } + + switch (pname) { + case GL_COUNTER_TYPE_AMD: + *((GLenum *) data) = counter_obj->Type; + break; + + case GL_COUNTER_RANGE_AMD: + switch (counter_obj->Type) { + case GL_FLOAT: + case GL_PERCENTAGE_AMD: { + float *f_data = data; + f_data[0] = counter_obj->Minimum.f; + f_data[1] = counter_obj->Maximum.f; + break; + } + case GL_UNSIGNED_INT: { + uint32_t *u32_data = data; + u32_data[0] = counter_obj->Minimum.u32; + u32_data[1] = counter_obj->Maximum.u32; + break; + } + case GL_UNSIGNED_INT64_AMD: { + uint64_t *u64_data = data; + u64_data[0] = counter_obj->Minimum.u64; + u64_data[1] = counter_obj->Maximum.u64; + break; + } + default: + assert(!"Should not get here: invalid counter type"); + } + break; + + default: + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetPerfMonitorCounterInfoAMD(pname)"); + return; + } +} + +void GLAPIENTRY +_mesa_GenPerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + GLuint first; + GET_CURRENT_CONTEXT(ctx); + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glGenPerfMonitorsAMD(%d)\n", n); + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenPerfMonitorsAMD(n < 0)"); + return; + } + + if (monitors == NULL) + return; + + /* We don't actually need them to be contiguous, but this is what + * the rest of Mesa does, so we may as well. + */ + first = _mesa_HashFindFreeKeyBlock(ctx->PerfMonitor.Monitors, n); + if (first) { + GLsizei i; + for (i = 0; i < n; i++) { + struct gl_perf_monitor_object *m = + new_performance_monitor(ctx, first + i); + if (!m) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenPerfMonitorsAMD"); + return; + } + monitors[i] = first + i; + _mesa_HashInsert(ctx->PerfMonitor.Monitors, first + i, m); + } + } else { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenPerfMonitorsAMD"); + return; + } +} + +void GLAPIENTRY +_mesa_DeletePerfMonitorsAMD(GLsizei n, GLuint *monitors) +{ + GLint i; + GET_CURRENT_CONTEXT(ctx); + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glDeletePerfMonitorsAMD(%d)\n", n); + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDeletePerfMonitorsAMD(n < 0)"); + return; + } + + if (monitors == NULL) + return; + + for (i = 0; i < n; i++) { + struct gl_perf_monitor_object *m = lookup_monitor(ctx, monitors[i]); + + if (m) { + /* Give the driver a chance to stop the monitor if it's active. */ + if (m->Active) + ctx->Driver.ResetPerfMonitor(ctx, m); + + _mesa_HashRemove(ctx->PerfMonitor.Monitors, monitors[i]); + ralloc_free(m->ActiveGroups); + ralloc_free(m->ActiveCounters); + ctx->Driver.DeletePerfMonitor(ctx, m); + } else { + /* "INVALID_VALUE error will be generated if any of the monitor IDs + * in the <monitors> parameter to DeletePerfMonitorsAMD do not + * reference a valid generated monitor ID." + */ + _mesa_error(ctx, GL_INVALID_VALUE, + "glDeletePerfMonitorsAMD(invalid monitor)"); + } + } +} + +void GLAPIENTRY +_mesa_SelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, + GLuint group, GLint numCounters, + GLuint *counterList) +{ + GET_CURRENT_CONTEXT(ctx); + unsigned i; + struct gl_perf_monitor_object *m; + const struct gl_perf_monitor_group *group_obj; + + m = lookup_monitor(ctx, monitor); + + /* "INVALID_VALUE error will be generated if the <monitor> parameter to + * SelectPerfMonitorCountersAMD does not reference a monitor created by + * GenPerfMonitorsAMD." + */ + if (m == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glSelectPerfMonitorCountersAMD(invalid monitor)"); + return; + } + + group_obj = get_group(ctx, group); + + /* "INVALID_VALUE error will be generated if the <group> parameter to + * GetPerfMonitorCountersAMD, GetPerfMonitorCounterStringAMD, + * GetPerfMonitorCounterStringAMD, GetPerfMonitorCounterInfoAMD, or + * SelectPerfMonitorCountersAMD does not reference a valid group ID." + */ + if (group_obj == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glSelectPerfMonitorCountersAMD(invalid group)"); + return; + } + + /* "INVALID_VALUE error will be generated if the <numCounters> parameter to + * SelectPerfMonitorCountersAMD is less than 0." + */ + if (numCounters < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glSelectPerfMonitorCountersAMD(numCounters < 0)"); + return; + } + + /* "When SelectPerfMonitorCountersAMD is called on a monitor, any outstanding + * results for that monitor become invalidated and the result queries + * PERFMON_RESULT_SIZE_AMD and PERFMON_RESULT_AVAILABLE_AMD are reset to 0." + */ + ctx->Driver.ResetPerfMonitor(ctx, m); + + /* Sanity check the counter ID list. */ + for (i = 0; i < numCounters; i++) { + if (counterList[i] >= group_obj->NumCounters) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glSelectPerfMonitorCountersAMD(invalid counter ID)"); + return; + } + } + + if (enable) { + /* Enable the counters */ + for (i = 0; i < numCounters; i++) { + ++m->ActiveGroups[group]; + BITSET_SET(m->ActiveCounters[group], counterList[i]); + } + } else { + /* Disable the counters */ + for (i = 0; i < numCounters; i++) { + --m->ActiveGroups[group]; + BITSET_CLEAR(m->ActiveCounters[group], counterList[i]); + } + } +} + +void GLAPIENTRY +_mesa_BeginPerfMonitorAMD(GLuint monitor) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_perf_monitor_object *m = lookup_monitor(ctx, monitor); + + if (m == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glBeginPerfMonitorAMD(invalid monitor)"); + return; + } + + /* "INVALID_OPERATION error will be generated if BeginPerfMonitorAMD is + * called when a performance monitor is already active." + */ + if (m->Active) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBeginPerfMonitor(already active)"); + return; + } + + /* The driver is free to return false if it can't begin monitoring for + * any reason. This translates into an INVALID_OPERATION error. + */ + if (ctx->Driver.BeginPerfMonitor(ctx, m)) { + m->Active = true; + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBeginPerfMonitor(driver unable to begin monitoring)"); + } +} + +void GLAPIENTRY +_mesa_EndPerfMonitorAMD(GLuint monitor) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_perf_monitor_object *m = lookup_monitor(ctx, monitor); + + if (m == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, "glEndPerfMonitorAMD(invalid monitor)"); + return; + } + + /* "INVALID_OPERATION error will be generated if EndPerfMonitorAMD is called + * when a performance monitor is not currently started." + */ + if (!m->Active) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBeginPerfMonitor(not active)"); + return; + } + + ctx->Driver.EndPerfMonitor(ctx, m); + + m->Active = false; +} + +/** + * Return the number of bytes needed to store a monitor's result. + */ +static unsigned +perf_monitor_result_size(const struct gl_context *ctx, + const struct gl_perf_monitor_object *m) +{ + unsigned group, counter; + unsigned size = 0; + + for (group = 0; group < ctx->PerfMonitor.NumGroups; group++) { + const struct gl_perf_monitor_group *g = &ctx->PerfMonitor.Groups[group]; + for (counter = 0; counter < g->NumCounters; counter++) { + const struct gl_perf_monitor_counter *c = &g->Counters[counter]; + + if (!BITSET_TEST(m->ActiveCounters[group], counter)) + continue; + + size += sizeof(uint32_t); /* Group ID */ + size += sizeof(uint32_t); /* Counter ID */ + size += _mesa_perf_monitor_counter_size(c); + } + } + return size; +} + +void GLAPIENTRY +_mesa_GetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, + GLsizei dataSize, GLuint *data, + GLint *bytesWritten) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_perf_monitor_object *m = lookup_monitor(ctx, monitor); + + if (m == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetPerfMonitorCounterDataAMD(invalid monitor)"); + return; + } + + /* "It is an INVALID_OPERATION error for <data> to be NULL." */ + if (data == NULL) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetPerfMonitorCounterDataAMD(data == NULL)"); + return; + } + + /* We need at least enough room for a single value. */ + if (dataSize < sizeof(GLuint)) { + if (bytesWritten != NULL) + *bytesWritten = 0; + return; + } + + /* AMD appears to return 0 for all queries unless a result is available. */ + if (!ctx->Driver.IsPerfMonitorResultAvailable(ctx, m)) { + *data = 0; + if (bytesWritten != NULL) + *bytesWritten = sizeof(GLuint); + return; + } + + switch (pname) { + case GL_PERFMON_RESULT_AVAILABLE_AMD: + *data = 1; + if (bytesWritten != NULL) + *bytesWritten = sizeof(GLuint); + break; + case GL_PERFMON_RESULT_SIZE_AMD: + *data = perf_monitor_result_size(ctx, m); + if (bytesWritten != NULL) + *bytesWritten = sizeof(GLuint); + break; + case GL_PERFMON_RESULT_AMD: + ctx->Driver.GetPerfMonitorResult(ctx, m, dataSize, data, bytesWritten); + break; + default: + _mesa_error(ctx, GL_INVALID_ENUM, + "glGetPerfMonitorCounterDataAMD(pname)"); + } +} + +/** + * Returns how many bytes a counter's value takes up. + */ +unsigned +_mesa_perf_monitor_counter_size(const struct gl_perf_monitor_counter *c) +{ + switch (c->Type) { + case GL_FLOAT: + case GL_PERCENTAGE_AMD: + return sizeof(GLfloat); + case GL_UNSIGNED_INT: + return sizeof(GLuint); + case GL_UNSIGNED_INT64_AMD: + return sizeof(uint64_t); + default: + assert(!"Should not get here: invalid counter type"); + return 0; + } +} diff --git a/mesalib/src/mesa/main/performance_monitor.h b/mesalib/src/mesa/main/performance_monitor.h new file mode 100644 index 000000000..a852a4184 --- /dev/null +++ b/mesalib/src/mesa/main/performance_monitor.h @@ -0,0 +1,85 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file performance_monitor.h + * Core Mesa support for the AMD_performance_monitor extension. + */ + +#pragma once +#ifndef PERFORMANCE_MONITOR_H +#define PERFORMANCE_MONITOR_H + +#include "glheader.h" + +extern void +_mesa_init_performance_monitors(struct gl_context *ctx); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, + GLuint *groups); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, + GLint *maxActiveCounters, + GLsizei countersSize, GLuint *counters); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, + GLsizei *length, GLchar *groupString); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, + GLsizei bufSize, GLsizei *length, + GLchar *counterString); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, + GLvoid *data); + +extern void GLAPIENTRY +_mesa_GenPerfMonitorsAMD(GLsizei n, GLuint *monitors); + +extern void GLAPIENTRY +_mesa_DeletePerfMonitorsAMD(GLsizei n, GLuint *monitors); + +extern void GLAPIENTRY +_mesa_SelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, + GLuint group, GLint numCounters, + GLuint *counterList); + +extern void GLAPIENTRY +_mesa_BeginPerfMonitorAMD(GLuint monitor); + +extern void GLAPIENTRY +_mesa_EndPerfMonitorAMD(GLuint monitor); + +extern void GLAPIENTRY +_mesa_GetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, + GLsizei dataSize, GLuint *data, + GLint *bytesWritten); + +unsigned +_mesa_perf_monitor_counter_size(const struct gl_perf_monitor_counter *); + +#endif diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c index c1261138d..e6cae0034 100644 --- a/mesalib/src/mesa/main/teximage.c +++ b/mesalib/src/mesa/main/teximage.c @@ -3179,7 +3179,7 @@ teximage(struct gl_context *ctx, GLboolean compressed, GLuint dims, _mesa_update_fbo_texture(ctx, texObj, face, level); - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); } } _mesa_unlock_texture(ctx, texObj); @@ -3298,7 +3298,7 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) ctx->Driver.EGLImageTargetTexture2D(ctx, target, texObj, texImage, image); - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); } _mesa_unlock_texture(ctx, texObj); @@ -3569,7 +3569,7 @@ copyteximage(struct gl_context *ctx, GLuint dims, _mesa_update_fbo_texture(ctx, texObj, face, level); - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); } } _mesa_unlock_texture(ctx, texObj); diff --git a/mesalib/src/mesa/main/texobj.c b/mesalib/src/mesa/main/texobj.c index cc2c786bb..abd30c563 100644 --- a/mesalib/src/mesa/main/texobj.c +++ b/mesalib/src/mesa/main/texobj.c @@ -715,20 +715,17 @@ _mesa_cube_complete(const struct gl_texture_object *texObj) /** * Mark a texture object dirty. It forces the object to be incomplete - * and optionally forces the context to re-validate its state. + * and forces the context to re-validate its state. * * \param ctx GL context. * \param texObj texture object. - * \param invalidate_state also invalidate context state. */ void -_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj, - GLboolean invalidate_state) +_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj) { texObj->_BaseComplete = GL_FALSE; texObj->_MipmapComplete = GL_FALSE; - if (invalidate_state) - ctx->NewState |= _NEW_TEXTURE; + ctx->NewState |= _NEW_TEXTURE; } diff --git a/mesalib/src/mesa/main/texobj.h b/mesalib/src/mesa/main/texobj.h index 0df088ce4..55091a642 100644 --- a/mesalib/src/mesa/main/texobj.h +++ b/mesalib/src/mesa/main/texobj.h @@ -126,8 +126,7 @@ extern GLboolean _mesa_cube_complete(const struct gl_texture_object *texObj); extern void -_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj, - GLboolean invalidate_state); +_mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj); extern struct gl_texture_object * _mesa_get_fallback_texture(struct gl_context *ctx, gl_texture_index tex); diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c index 757ae80ec..31723c377 100644 --- a/mesalib/src/mesa/main/texparam.c +++ b/mesalib/src/mesa/main/texparam.c @@ -256,7 +256,7 @@ static inline void incomplete(struct gl_context *ctx, struct gl_texture_object *texObj) { FLUSH_VERTICES(ctx, _NEW_TEXTURE); - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); } diff --git a/mesalib/src/mesa/program/Android.mk b/mesalib/src/mesa/program/Android.mk index 3f974ea27..29a1b6a63 100644 --- a/mesalib/src/mesa/program/Android.mk +++ b/mesalib/src/mesa/program/Android.mk @@ -71,9 +71,6 @@ $(intermediates)/program/program_parse.tab.h: $(intermediates)/program/program_p $(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program_lexer.l $(local-l-to-c) -LOCAL_CFLAGS := \ - $(patsubst %,-DFEATURE_%=1,$(MESA_ENABLED_APIS)) - LOCAL_C_INCLUDES := \ $(intermediates) \ $(MESA_TOP)/src/mapi \ diff --git a/mesalib/src/mesa/state_tracker/st_cb_eglimage.c b/mesalib/src/mesa/state_tracker/st_cb_eglimage.c index b871cdd19..7484cb4f1 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_eglimage.c +++ b/mesalib/src/mesa/state_tracker/st_cb_eglimage.c @@ -132,7 +132,7 @@ st_bind_surface(struct gl_context *ctx, GLenum target, stObj->depth0 = 1; stObj->surface_format = ps->format; - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); } static void diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 271cf0523..53838b391 100644 --- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1944,6 +1944,14 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir) /* note: we have to reorder the three args here */ emit(ir, TGSI_OPCODE_LRP, result_dst, op[2], op[1], op[0]); break; + case ir_triop_csel: + if (this->ctx->Const.NativeIntegers) + emit(ir, TGSI_OPCODE_UCMP, result_dst, op[0], op[1], op[2]); + else { + op[0].negate = ~op[0].negate; + emit(ir, TGSI_OPCODE_CMP, result_dst, op[0], op[1], op[2]); + } + break; case ir_unop_pack_snorm_2x16: case ir_unop_pack_unorm_2x16: case ir_unop_pack_half_2x16: @@ -1970,7 +1978,6 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir) case ir_binop_vector_extract: case ir_triop_vector_insert: case ir_binop_ldexp: - case ir_triop_csel: /* This operation is not supported, or should have already been handled. */ assert(!"Invalid ir opcode in glsl_to_tgsi_visitor::visit()"); diff --git a/mesalib/src/mesa/state_tracker/st_manager.c b/mesalib/src/mesa/state_tracker/st_manager.c index b1fd91a0e..8158450dc 100644 --- a/mesalib/src/mesa/state_tracker/st_manager.c +++ b/mesalib/src/mesa/state_tracker/st_manager.c @@ -545,7 +545,7 @@ st_context_teximage(struct st_context_iface *stctxi, stObj->depth0 = depth; stObj->surface_format = pipe_format; - _mesa_dirty_texobj(ctx, texObj, GL_TRUE); + _mesa_dirty_texobj(ctx, texObj); _mesa_unlock_texture(ctx, texObj); return TRUE; diff --git a/pixman/pixman/pixman-bits-image.c b/pixman/pixman/pixman-bits-image.c index 7b9a97335..f9121a365 100644 --- a/pixman/pixman/pixman-bits-image.c +++ b/pixman/pixman/pixman-bits-image.c @@ -137,221 +137,6 @@ bits_image_fetch_pixel_bilinear (bits_image_t *image, return bilinear_interpolation (tl, tr, bl, br, distx, disty); } -static uint32_t * -bits_image_fetch_bilinear_no_repeat_8888 (pixman_iter_t *iter, - const uint32_t *mask) -{ - - pixman_image_t * ima = iter->image; - int offset = iter->x; - int line = iter->y++; - int width = iter->width; - uint32_t * buffer = iter->buffer; - - bits_image_t *bits = &ima->bits; - pixman_fixed_t x_top, x_bottom, x; - pixman_fixed_t ux_top, ux_bottom, ux; - pixman_vector_t v; - uint32_t top_mask, bottom_mask; - uint32_t *top_row; - uint32_t *bottom_row; - uint32_t *end; - uint32_t zero[2] = { 0, 0 }; - uint32_t one = 1; - int y, y1, y2; - int disty; - int mask_inc; - int w; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; - v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; - v.vector[2] = pixman_fixed_1; - - if (!pixman_transform_point_3d (bits->common.transform, &v)) - return iter->buffer; - - ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0]; - x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2; - - y = v.vector[1] - pixman_fixed_1/2; - disty = pixman_fixed_to_bilinear_weight (y); - - /* Load the pointers to the first and second lines from the source - * image that bilinear code must read. - * - * The main trick in this code is about the check if any line are - * outside of the image; - * - * When I realize that a line (any one) is outside, I change - * the pointer to a dummy area with zeros. Once I change this, I - * must be sure the pointer will not change, so I set the - * variables to each pointer increments inside the loop. - */ - y1 = pixman_fixed_to_int (y); - y2 = y1 + 1; - - if (y1 < 0 || y1 >= bits->height) - { - top_row = zero; - x_top = 0; - ux_top = 0; - } - else - { - top_row = bits->bits + y1 * bits->rowstride; - x_top = x; - ux_top = ux; - } - - if (y2 < 0 || y2 >= bits->height) - { - bottom_row = zero; - x_bottom = 0; - ux_bottom = 0; - } - else - { - bottom_row = bits->bits + y2 * bits->rowstride; - x_bottom = x; - ux_bottom = ux; - } - - /* Instead of checking whether the operation uses the mast in - * each loop iteration, verify this only once and prepare the - * variables to make the code smaller inside the loop. - */ - if (!mask) - { - mask_inc = 0; - mask = &one; - } - else - { - /* If have a mask, prepare the variables to check it */ - mask_inc = 1; - } - - /* If both are zero, then the whole thing is zero */ - if (top_row == zero && bottom_row == zero) - { - memset (buffer, 0, width * sizeof (uint32_t)); - return iter->buffer; - } - else if (bits->format == PIXMAN_x8r8g8b8) - { - if (top_row == zero) - { - top_mask = 0; - bottom_mask = 0xff000000; - } - else if (bottom_row == zero) - { - top_mask = 0xff000000; - bottom_mask = 0; - } - else - { - top_mask = 0xff000000; - bottom_mask = 0xff000000; - } - } - else - { - top_mask = 0; - bottom_mask = 0; - } - - end = buffer + width; - - /* Zero fill to the left of the image */ - while (buffer < end && x < pixman_fixed_minus_1) - { - *buffer++ = 0; - x += ux; - x_top += ux_top; - x_bottom += ux_bottom; - mask += mask_inc; - } - - /* Left edge - */ - while (buffer < end && x < 0) - { - uint32_t tr, br; - int32_t distx; - - tr = top_row[pixman_fixed_to_int (x_top) + 1] | top_mask; - br = bottom_row[pixman_fixed_to_int (x_bottom) + 1] | bottom_mask; - - distx = pixman_fixed_to_bilinear_weight (x); - - *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty); - - x += ux; - x_top += ux_top; - x_bottom += ux_bottom; - mask += mask_inc; - } - - /* Main part */ - w = pixman_int_to_fixed (bits->width - 1); - - while (buffer < end && x < w) - { - if (*mask) - { - uint32_t tl, tr, bl, br; - int32_t distx; - - tl = top_row [pixman_fixed_to_int (x_top)] | top_mask; - tr = top_row [pixman_fixed_to_int (x_top) + 1] | top_mask; - bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask; - br = bottom_row [pixman_fixed_to_int (x_bottom) + 1] | bottom_mask; - - distx = pixman_fixed_to_bilinear_weight (x); - - *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty); - } - - buffer++; - x += ux; - x_top += ux_top; - x_bottom += ux_bottom; - mask += mask_inc; - } - - /* Right Edge */ - w = pixman_int_to_fixed (bits->width); - while (buffer < end && x < w) - { - if (*mask) - { - uint32_t tl, bl; - int32_t distx; - - tl = top_row [pixman_fixed_to_int (x_top)] | top_mask; - bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask; - - distx = pixman_fixed_to_bilinear_weight (x); - - *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty); - } - - buffer++; - x += ux; - x_top += ux_top; - x_bottom += ux_bottom; - mask += mask_inc; - } - - /* Zero fill to the left of the image */ - while (buffer < end) - *buffer++ = 0; - - return iter->buffer; -} - static force_inline uint32_t bits_image_fetch_pixel_convolution (bits_image_t *image, pixman_fixed_t x, @@ -720,472 +505,6 @@ bits_image_fetch_general (pixman_iter_t *iter, return buffer; } -typedef uint32_t (* convert_pixel_t) (const uint8_t *row, int x); - -static force_inline void -bits_image_fetch_separable_convolution_affine (pixman_image_t * image, - int offset, - int line, - int width, - uint32_t * buffer, - const uint32_t * mask, - - convert_pixel_t convert_pixel, - pixman_format_code_t format, - pixman_repeat_t repeat_mode) -{ - bits_image_t *bits = &image->bits; - pixman_fixed_t *params = image->common.filter_params; - int cwidth = pixman_fixed_to_int (params[0]); - int cheight = pixman_fixed_to_int (params[1]); - int x_off = ((cwidth << 16) - pixman_fixed_1) >> 1; - int y_off = ((cheight << 16) - pixman_fixed_1) >> 1; - int x_phase_bits = pixman_fixed_to_int (params[2]); - int y_phase_bits = pixman_fixed_to_int (params[3]); - int x_phase_shift = 16 - x_phase_bits; - int y_phase_shift = 16 - y_phase_bits; - pixman_fixed_t vx, vy; - pixman_fixed_t ux, uy; - pixman_vector_t v; - int k; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; - v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; - v.vector[2] = pixman_fixed_1; - - if (!pixman_transform_point_3d (image->common.transform, &v)) - return; - - ux = image->common.transform->matrix[0][0]; - uy = image->common.transform->matrix[1][0]; - - vx = v.vector[0]; - vy = v.vector[1]; - - for (k = 0; k < width; ++k) - { - pixman_fixed_t *y_params; - int satot, srtot, sgtot, sbtot; - pixman_fixed_t x, y; - int32_t x1, x2, y1, y2; - int32_t px, py; - int i, j; - - if (mask && !mask[k]) - goto next; - - /* Round x and y to the middle of the closest phase before continuing. This - * ensures that the convolution matrix is aligned right, since it was - * positioned relative to a particular phase (and not relative to whatever - * exact fraction we happen to get here). - */ - x = ((vx >> x_phase_shift) << x_phase_shift) + ((1 << x_phase_shift) >> 1); - y = ((vy >> y_phase_shift) << y_phase_shift) + ((1 << y_phase_shift) >> 1); - - px = (x & 0xffff) >> x_phase_shift; - py = (y & 0xffff) >> y_phase_shift; - - x1 = pixman_fixed_to_int (x - pixman_fixed_e - x_off); - y1 = pixman_fixed_to_int (y - pixman_fixed_e - y_off); - x2 = x1 + cwidth; - y2 = y1 + cheight; - - satot = srtot = sgtot = sbtot = 0; - - y_params = params + 4 + (1 << x_phase_bits) * cwidth + py * cheight; - - for (i = y1; i < y2; ++i) - { - pixman_fixed_t fy = *y_params++; - - if (fy) - { - pixman_fixed_t *x_params = params + 4 + px * cwidth; - - for (j = x1; j < x2; ++j) - { - pixman_fixed_t fx = *x_params++; - int rx = j; - int ry = i; - - if (fx) - { - pixman_fixed_t f; - uint32_t pixel, mask; - uint8_t *row; - - mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; - - if (repeat_mode != PIXMAN_REPEAT_NONE) - { - repeat (repeat_mode, &rx, bits->width); - repeat (repeat_mode, &ry, bits->height); - - row = (uint8_t *)bits->bits + bits->rowstride * 4 * ry; - pixel = convert_pixel (row, rx) | mask; - } - else - { - if (rx < 0 || ry < 0 || rx >= bits->width || ry >= bits->height) - { - pixel = 0; - } - else - { - row = (uint8_t *)bits->bits + bits->rowstride * 4 * ry; - pixel = convert_pixel (row, rx) | mask; - } - } - - f = ((pixman_fixed_32_32_t)fx * fy + 0x8000) >> 16; - srtot += (int)RED_8 (pixel) * f; - sgtot += (int)GREEN_8 (pixel) * f; - sbtot += (int)BLUE_8 (pixel) * f; - satot += (int)ALPHA_8 (pixel) * f; - } - } - } - } - - satot = (satot + 0x8000) >> 16; - srtot = (srtot + 0x8000) >> 16; - sgtot = (sgtot + 0x8000) >> 16; - sbtot = (sbtot + 0x8000) >> 16; - - satot = CLIP (satot, 0, 0xff); - srtot = CLIP (srtot, 0, 0xff); - sgtot = CLIP (sgtot, 0, 0xff); - sbtot = CLIP (sbtot, 0, 0xff); - - buffer[k] = (satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0); - - next: - vx += ux; - vy += uy; - } -} - -static const uint8_t zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -static force_inline void -bits_image_fetch_bilinear_affine (pixman_image_t * image, - int offset, - int line, - int width, - uint32_t * buffer, - const uint32_t * mask, - - convert_pixel_t convert_pixel, - pixman_format_code_t format, - pixman_repeat_t repeat_mode) -{ - pixman_fixed_t x, y; - pixman_fixed_t ux, uy; - pixman_vector_t v; - bits_image_t *bits = &image->bits; - int i; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; - v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; - v.vector[2] = pixman_fixed_1; - - if (!pixman_transform_point_3d (image->common.transform, &v)) - return; - - ux = image->common.transform->matrix[0][0]; - uy = image->common.transform->matrix[1][0]; - - x = v.vector[0]; - y = v.vector[1]; - - for (i = 0; i < width; ++i) - { - int x1, y1, x2, y2; - uint32_t tl, tr, bl, br; - int32_t distx, disty; - int width = image->bits.width; - int height = image->bits.height; - const uint8_t *row1; - const uint8_t *row2; - - if (mask && !mask[i]) - goto next; - - x1 = x - pixman_fixed_1 / 2; - y1 = y - pixman_fixed_1 / 2; - - distx = pixman_fixed_to_bilinear_weight (x1); - disty = pixman_fixed_to_bilinear_weight (y1); - - y1 = pixman_fixed_to_int (y1); - y2 = y1 + 1; - x1 = pixman_fixed_to_int (x1); - x2 = x1 + 1; - - if (repeat_mode != PIXMAN_REPEAT_NONE) - { - uint32_t mask; - - mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; - - repeat (repeat_mode, &x1, width); - repeat (repeat_mode, &y1, height); - repeat (repeat_mode, &x2, width); - repeat (repeat_mode, &y2, height); - - row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1; - row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2; - - tl = convert_pixel (row1, x1) | mask; - tr = convert_pixel (row1, x2) | mask; - bl = convert_pixel (row2, x1) | mask; - br = convert_pixel (row2, x2) | mask; - } - else - { - uint32_t mask1, mask2; - int bpp; - - /* Note: PIXMAN_FORMAT_BPP() returns an unsigned value, - * which means if you use it in expressions, those - * expressions become unsigned themselves. Since - * the variables below can be negative in some cases, - * that will lead to crashes on 64 bit architectures. - * - * So this line makes sure bpp is signed - */ - bpp = PIXMAN_FORMAT_BPP (format); - - if (x1 >= width || x2 < 0 || y1 >= height || y2 < 0) - { - buffer[i] = 0; - goto next; - } - - if (y2 == 0) - { - row1 = zero; - mask1 = 0; - } - else - { - row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1; - row1 += bpp / 8 * x1; - - mask1 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; - } - - if (y1 == height - 1) - { - row2 = zero; - mask2 = 0; - } - else - { - row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2; - row2 += bpp / 8 * x1; - - mask2 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; - } - - if (x2 == 0) - { - tl = 0; - bl = 0; - } - else - { - tl = convert_pixel (row1, 0) | mask1; - bl = convert_pixel (row2, 0) | mask2; - } - - if (x1 == width - 1) - { - tr = 0; - br = 0; - } - else - { - tr = convert_pixel (row1, 1) | mask1; - br = convert_pixel (row2, 1) | mask2; - } - } - - buffer[i] = bilinear_interpolation ( - tl, tr, bl, br, distx, disty); - - next: - x += ux; - y += uy; - } -} - -static force_inline void -bits_image_fetch_nearest_affine (pixman_image_t * image, - int offset, - int line, - int width, - uint32_t * buffer, - const uint32_t * mask, - - convert_pixel_t convert_pixel, - pixman_format_code_t format, - pixman_repeat_t repeat_mode) -{ - pixman_fixed_t x, y; - pixman_fixed_t ux, uy; - pixman_vector_t v; - bits_image_t *bits = &image->bits; - int i; - - /* reference point is the center of the pixel */ - v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; - v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; - v.vector[2] = pixman_fixed_1; - - if (!pixman_transform_point_3d (image->common.transform, &v)) - return; - - ux = image->common.transform->matrix[0][0]; - uy = image->common.transform->matrix[1][0]; - - x = v.vector[0]; - y = v.vector[1]; - - for (i = 0; i < width; ++i) - { - int width, height, x0, y0; - const uint8_t *row; - - if (mask && !mask[i]) - goto next; - - width = image->bits.width; - height = image->bits.height; - x0 = pixman_fixed_to_int (x - pixman_fixed_e); - y0 = pixman_fixed_to_int (y - pixman_fixed_e); - - if (repeat_mode == PIXMAN_REPEAT_NONE && - (y0 < 0 || y0 >= height || x0 < 0 || x0 >= width)) - { - buffer[i] = 0; - } - else - { - uint32_t mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; - - if (repeat_mode != PIXMAN_REPEAT_NONE) - { - repeat (repeat_mode, &x0, width); - repeat (repeat_mode, &y0, height); - } - - row = (uint8_t *)bits->bits + bits->rowstride * 4 * y0; - - buffer[i] = convert_pixel (row, x0) | mask; - } - - next: - x += ux; - y += uy; - } -} - -static force_inline uint32_t -convert_a8r8g8b8 (const uint8_t *row, int x) -{ - return *(((uint32_t *)row) + x); -} - -static force_inline uint32_t -convert_x8r8g8b8 (const uint8_t *row, int x) -{ - return *(((uint32_t *)row) + x); -} - -static force_inline uint32_t -convert_a8 (const uint8_t *row, int x) -{ - return *(row + x) << 24; -} - -static force_inline uint32_t -convert_r5g6b5 (const uint8_t *row, int x) -{ - return convert_0565_to_0888 (*((uint16_t *)row + x)); -} - -#define MAKE_SEPARABLE_CONVOLUTION_FETCHER(name, format, repeat_mode) \ - static uint32_t * \ - bits_image_fetch_separable_convolution_affine_ ## name (pixman_iter_t *iter, \ - const uint32_t * mask) \ - { \ - bits_image_fetch_separable_convolution_affine ( \ - iter->image, \ - iter->x, iter->y++, \ - iter->width, \ - iter->buffer, mask, \ - convert_ ## format, \ - PIXMAN_ ## format, \ - repeat_mode); \ - \ - return iter->buffer; \ - } - -#define MAKE_BILINEAR_FETCHER(name, format, repeat_mode) \ - static uint32_t * \ - bits_image_fetch_bilinear_affine_ ## name (pixman_iter_t *iter, \ - const uint32_t * mask) \ - { \ - bits_image_fetch_bilinear_affine (iter->image, \ - iter->x, iter->y++, \ - iter->width, \ - iter->buffer, mask, \ - convert_ ## format, \ - PIXMAN_ ## format, \ - repeat_mode); \ - return iter->buffer; \ - } - -#define MAKE_NEAREST_FETCHER(name, format, repeat_mode) \ - static uint32_t * \ - bits_image_fetch_nearest_affine_ ## name (pixman_iter_t *iter, \ - const uint32_t * mask) \ - { \ - bits_image_fetch_nearest_affine (iter->image, \ - iter->x, iter->y++, \ - iter->width, \ - iter->buffer, mask, \ - convert_ ## format, \ - PIXMAN_ ## format, \ - repeat_mode); \ - return iter->buffer; \ - } - -#define MAKE_FETCHERS(name, format, repeat_mode) \ - MAKE_NEAREST_FETCHER (name, format, repeat_mode) \ - MAKE_BILINEAR_FETCHER (name, format, repeat_mode) \ - MAKE_SEPARABLE_CONVOLUTION_FETCHER (name, format, repeat_mode) - -MAKE_FETCHERS (pad_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_PAD) -MAKE_FETCHERS (none_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NONE) -MAKE_FETCHERS (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT) -MAKE_FETCHERS (normal_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NORMAL) -MAKE_FETCHERS (pad_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_PAD) -MAKE_FETCHERS (none_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NONE) -MAKE_FETCHERS (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT) -MAKE_FETCHERS (normal_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NORMAL) -MAKE_FETCHERS (pad_a8, a8, PIXMAN_REPEAT_PAD) -MAKE_FETCHERS (none_a8, a8, PIXMAN_REPEAT_NONE) -MAKE_FETCHERS (reflect_a8, a8, PIXMAN_REPEAT_REFLECT) -MAKE_FETCHERS (normal_a8, a8, PIXMAN_REPEAT_NORMAL) -MAKE_FETCHERS (pad_r5g6b5, r5g6b5, PIXMAN_REPEAT_PAD) -MAKE_FETCHERS (none_r5g6b5, r5g6b5, PIXMAN_REPEAT_NONE) -MAKE_FETCHERS (reflect_r5g6b5, r5g6b5, PIXMAN_REPEAT_REFLECT) -MAKE_FETCHERS (normal_r5g6b5, r5g6b5, PIXMAN_REPEAT_NORMAL) - static void replicate_pixel_32 (bits_image_t * bits, int x, @@ -1381,92 +700,6 @@ static const fetcher_info_t fetcher_info[] = bits_image_fetch_untransformed_float }, -#define FAST_BILINEAR_FLAGS \ - (FAST_PATH_NO_ALPHA_MAP | \ - FAST_PATH_NO_ACCESSORS | \ - FAST_PATH_HAS_TRANSFORM | \ - FAST_PATH_AFFINE_TRANSFORM | \ - FAST_PATH_X_UNIT_POSITIVE | \ - FAST_PATH_Y_UNIT_ZERO | \ - FAST_PATH_NONE_REPEAT | \ - FAST_PATH_BILINEAR_FILTER) - - { PIXMAN_a8r8g8b8, - FAST_BILINEAR_FLAGS, - bits_image_fetch_bilinear_no_repeat_8888, - _pixman_image_get_scanline_generic_float - }, - - { PIXMAN_x8r8g8b8, - FAST_BILINEAR_FLAGS, - bits_image_fetch_bilinear_no_repeat_8888, - _pixman_image_get_scanline_generic_float - }, - -#define GENERAL_BILINEAR_FLAGS \ - (FAST_PATH_NO_ALPHA_MAP | \ - FAST_PATH_NO_ACCESSORS | \ - FAST_PATH_HAS_TRANSFORM | \ - FAST_PATH_AFFINE_TRANSFORM | \ - FAST_PATH_BILINEAR_FILTER) - -#define GENERAL_NEAREST_FLAGS \ - (FAST_PATH_NO_ALPHA_MAP | \ - FAST_PATH_NO_ACCESSORS | \ - FAST_PATH_HAS_TRANSFORM | \ - FAST_PATH_AFFINE_TRANSFORM | \ - FAST_PATH_NEAREST_FILTER) - -#define GENERAL_SEPARABLE_CONVOLUTION_FLAGS \ - (FAST_PATH_NO_ALPHA_MAP | \ - FAST_PATH_NO_ACCESSORS | \ - FAST_PATH_HAS_TRANSFORM | \ - FAST_PATH_AFFINE_TRANSFORM | \ - FAST_PATH_SEPARABLE_CONVOLUTION_FILTER) - -#define SEPARABLE_CONVOLUTION_AFFINE_FAST_PATH(name, format, repeat) \ - { PIXMAN_ ## format, \ - GENERAL_SEPARABLE_CONVOLUTION_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ - bits_image_fetch_separable_convolution_affine_ ## name, \ - _pixman_image_get_scanline_generic_float \ - }, - -#define BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \ - { PIXMAN_ ## format, \ - GENERAL_BILINEAR_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ - bits_image_fetch_bilinear_affine_ ## name, \ - _pixman_image_get_scanline_generic_float \ - }, - -#define NEAREST_AFFINE_FAST_PATH(name, format, repeat) \ - { PIXMAN_ ## format, \ - GENERAL_NEAREST_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ - bits_image_fetch_nearest_affine_ ## name, \ - _pixman_image_get_scanline_generic_float \ - }, - -#define AFFINE_FAST_PATHS(name, format, repeat) \ - SEPARABLE_CONVOLUTION_AFFINE_FAST_PATH(name, format, repeat) \ - BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \ - NEAREST_AFFINE_FAST_PATH(name, format, repeat) - - AFFINE_FAST_PATHS (pad_a8r8g8b8, a8r8g8b8, PAD) - AFFINE_FAST_PATHS (none_a8r8g8b8, a8r8g8b8, NONE) - AFFINE_FAST_PATHS (reflect_a8r8g8b8, a8r8g8b8, REFLECT) - AFFINE_FAST_PATHS (normal_a8r8g8b8, a8r8g8b8, NORMAL) - AFFINE_FAST_PATHS (pad_x8r8g8b8, x8r8g8b8, PAD) - AFFINE_FAST_PATHS (none_x8r8g8b8, x8r8g8b8, NONE) - AFFINE_FAST_PATHS (reflect_x8r8g8b8, x8r8g8b8, REFLECT) - AFFINE_FAST_PATHS (normal_x8r8g8b8, x8r8g8b8, NORMAL) - AFFINE_FAST_PATHS (pad_a8, a8, PAD) - AFFINE_FAST_PATHS (none_a8, a8, NONE) - AFFINE_FAST_PATHS (reflect_a8, a8, REFLECT) - AFFINE_FAST_PATHS (normal_a8, a8, NORMAL) - AFFINE_FAST_PATHS (pad_r5g6b5, r5g6b5, PAD) - AFFINE_FAST_PATHS (none_r5g6b5, r5g6b5, NONE) - AFFINE_FAST_PATHS (reflect_r5g6b5, r5g6b5, REFLECT) - AFFINE_FAST_PATHS (normal_r5g6b5, r5g6b5, NORMAL) - /* Affine, no alpha */ { PIXMAN_any, (FAST_PATH_NO_ALPHA_MAP | FAST_PATH_HAS_TRANSFORM | FAST_PATH_AFFINE_TRANSFORM), diff --git a/pixman/pixman/pixman-fast-path.c b/pixman/pixman/pixman-fast-path.c index 5d52b4a57..b06d1b27d 100644 --- a/pixman/pixman/pixman-fast-path.c +++ b/pixman/pixman/pixman-fast-path.c @@ -2269,8 +2269,7 @@ typedef struct typedef struct { - line_t line0; - line_t line1; + line_t lines[2]; pixman_fixed_t y; pixman_fixed_t x; uint64_t data[1]; @@ -2352,29 +2351,19 @@ fast_fetch_bilinear_cover (pixman_iter_t *iter, const uint32_t *mask) dist_y = pixman_fixed_to_bilinear_weight (info->y); dist_y <<= (8 - BILINEAR_INTERPOLATION_BITS); - line0 = &info->line0; - line1 = &info->line1; + line0 = &info->lines[y0 & 0x01]; + line1 = &info->lines[y1 & 0x01]; - if (line0->y != y0 || line1->y != y1) + if (line0->y != y0) { - if (line0->y == y1 || line1->y == y0) - { - line_t tmp = *line0; - *line0 = *line1; - *line1 = tmp; - } - - if (line0->y != y0) - { - fetch_horizontal ( - &iter->image->bits, line0, y0, fx, ux, iter->width); - } + fetch_horizontal ( + &iter->image->bits, line0, y0, fx, ux, iter->width); + } - if (line1->y != y1) - { - fetch_horizontal ( - &iter->image->bits, line1, y1, fx, ux, iter->width); - } + if (line1->y != y1) + { + fetch_horizontal ( + &iter->image->bits, line1, y1, fx, ux, iter->width); } for (i = 0; i < iter->width; ++i) @@ -2470,10 +2459,10 @@ fast_bilinear_cover_iter_init (pixman_iter_t *iter, const pixman_iter_info_t *it * because COVER_CLIP_BILINEAR ensures that we will only * be asked to fetch lines in the [0, height) interval */ - info->line0.y = -1; - info->line0.buffer = &(info->data[0]); - info->line1.y = -1; - info->line1.buffer = &(info->data[width]); + info->lines[0].y = -1; + info->lines[0].buffer = &(info->data[0]); + info->lines[1].y = -1; + info->lines[1].buffer = &(info->data[width]); iter->get_scanline = fast_fetch_bilinear_cover; iter->fini = bilinear_cover_iter_fini; @@ -2492,6 +2481,687 @@ fail: iter->fini = NULL; } +static uint32_t * +bits_image_fetch_bilinear_no_repeat_8888 (pixman_iter_t *iter, + const uint32_t *mask) +{ + + pixman_image_t * ima = iter->image; + int offset = iter->x; + int line = iter->y++; + int width = iter->width; + uint32_t * buffer = iter->buffer; + + bits_image_t *bits = &ima->bits; + pixman_fixed_t x_top, x_bottom, x; + pixman_fixed_t ux_top, ux_bottom, ux; + pixman_vector_t v; + uint32_t top_mask, bottom_mask; + uint32_t *top_row; + uint32_t *bottom_row; + uint32_t *end; + uint32_t zero[2] = { 0, 0 }; + uint32_t one = 1; + int y, y1, y2; + int disty; + int mask_inc; + int w; + + /* reference point is the center of the pixel */ + v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; + v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; + v.vector[2] = pixman_fixed_1; + + if (!pixman_transform_point_3d (bits->common.transform, &v)) + return iter->buffer; + + ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0]; + x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2; + + y = v.vector[1] - pixman_fixed_1/2; + disty = pixman_fixed_to_bilinear_weight (y); + + /* Load the pointers to the first and second lines from the source + * image that bilinear code must read. + * + * The main trick in this code is about the check if any line are + * outside of the image; + * + * When I realize that a line (any one) is outside, I change + * the pointer to a dummy area with zeros. Once I change this, I + * must be sure the pointer will not change, so I set the + * variables to each pointer increments inside the loop. + */ + y1 = pixman_fixed_to_int (y); + y2 = y1 + 1; + + if (y1 < 0 || y1 >= bits->height) + { + top_row = zero; + x_top = 0; + ux_top = 0; + } + else + { + top_row = bits->bits + y1 * bits->rowstride; + x_top = x; + ux_top = ux; + } + + if (y2 < 0 || y2 >= bits->height) + { + bottom_row = zero; + x_bottom = 0; + ux_bottom = 0; + } + else + { + bottom_row = bits->bits + y2 * bits->rowstride; + x_bottom = x; + ux_bottom = ux; + } + + /* Instead of checking whether the operation uses the mast in + * each loop iteration, verify this only once and prepare the + * variables to make the code smaller inside the loop. + */ + if (!mask) + { + mask_inc = 0; + mask = &one; + } + else + { + /* If have a mask, prepare the variables to check it */ + mask_inc = 1; + } + + /* If both are zero, then the whole thing is zero */ + if (top_row == zero && bottom_row == zero) + { + memset (buffer, 0, width * sizeof (uint32_t)); + return iter->buffer; + } + else if (bits->format == PIXMAN_x8r8g8b8) + { + if (top_row == zero) + { + top_mask = 0; + bottom_mask = 0xff000000; + } + else if (bottom_row == zero) + { + top_mask = 0xff000000; + bottom_mask = 0; + } + else + { + top_mask = 0xff000000; + bottom_mask = 0xff000000; + } + } + else + { + top_mask = 0; + bottom_mask = 0; + } + + end = buffer + width; + + /* Zero fill to the left of the image */ + while (buffer < end && x < pixman_fixed_minus_1) + { + *buffer++ = 0; + x += ux; + x_top += ux_top; + x_bottom += ux_bottom; + mask += mask_inc; + } + + /* Left edge + */ + while (buffer < end && x < 0) + { + uint32_t tr, br; + int32_t distx; + + tr = top_row[pixman_fixed_to_int (x_top) + 1] | top_mask; + br = bottom_row[pixman_fixed_to_int (x_bottom) + 1] | bottom_mask; + + distx = pixman_fixed_to_bilinear_weight (x); + + *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty); + + x += ux; + x_top += ux_top; + x_bottom += ux_bottom; + mask += mask_inc; + } + + /* Main part */ + w = pixman_int_to_fixed (bits->width - 1); + + while (buffer < end && x < w) + { + if (*mask) + { + uint32_t tl, tr, bl, br; + int32_t distx; + + tl = top_row [pixman_fixed_to_int (x_top)] | top_mask; + tr = top_row [pixman_fixed_to_int (x_top) + 1] | top_mask; + bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask; + br = bottom_row [pixman_fixed_to_int (x_bottom) + 1] | bottom_mask; + + distx = pixman_fixed_to_bilinear_weight (x); + + *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty); + } + + buffer++; + x += ux; + x_top += ux_top; + x_bottom += ux_bottom; + mask += mask_inc; + } + + /* Right Edge */ + w = pixman_int_to_fixed (bits->width); + while (buffer < end && x < w) + { + if (*mask) + { + uint32_t tl, bl; + int32_t distx; + + tl = top_row [pixman_fixed_to_int (x_top)] | top_mask; + bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask; + + distx = pixman_fixed_to_bilinear_weight (x); + + *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty); + } + + buffer++; + x += ux; + x_top += ux_top; + x_bottom += ux_bottom; + mask += mask_inc; + } + + /* Zero fill to the left of the image */ + while (buffer < end) + *buffer++ = 0; + + return iter->buffer; +} + +typedef uint32_t (* convert_pixel_t) (const uint8_t *row, int x); + +static force_inline void +bits_image_fetch_separable_convolution_affine (pixman_image_t * image, + int offset, + int line, + int width, + uint32_t * buffer, + const uint32_t * mask, + + convert_pixel_t convert_pixel, + pixman_format_code_t format, + pixman_repeat_t repeat_mode) +{ + bits_image_t *bits = &image->bits; + pixman_fixed_t *params = image->common.filter_params; + int cwidth = pixman_fixed_to_int (params[0]); + int cheight = pixman_fixed_to_int (params[1]); + int x_off = ((cwidth << 16) - pixman_fixed_1) >> 1; + int y_off = ((cheight << 16) - pixman_fixed_1) >> 1; + int x_phase_bits = pixman_fixed_to_int (params[2]); + int y_phase_bits = pixman_fixed_to_int (params[3]); + int x_phase_shift = 16 - x_phase_bits; + int y_phase_shift = 16 - y_phase_bits; + pixman_fixed_t vx, vy; + pixman_fixed_t ux, uy; + pixman_vector_t v; + int k; + + /* reference point is the center of the pixel */ + v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; + v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; + v.vector[2] = pixman_fixed_1; + + if (!pixman_transform_point_3d (image->common.transform, &v)) + return; + + ux = image->common.transform->matrix[0][0]; + uy = image->common.transform->matrix[1][0]; + + vx = v.vector[0]; + vy = v.vector[1]; + + for (k = 0; k < width; ++k) + { + pixman_fixed_t *y_params; + int satot, srtot, sgtot, sbtot; + pixman_fixed_t x, y; + int32_t x1, x2, y1, y2; + int32_t px, py; + int i, j; + + if (mask && !mask[k]) + goto next; + + /* Round x and y to the middle of the closest phase before continuing. This + * ensures that the convolution matrix is aligned right, since it was + * positioned relative to a particular phase (and not relative to whatever + * exact fraction we happen to get here). + */ + x = ((vx >> x_phase_shift) << x_phase_shift) + ((1 << x_phase_shift) >> 1); + y = ((vy >> y_phase_shift) << y_phase_shift) + ((1 << y_phase_shift) >> 1); + + px = (x & 0xffff) >> x_phase_shift; + py = (y & 0xffff) >> y_phase_shift; + + x1 = pixman_fixed_to_int (x - pixman_fixed_e - x_off); + y1 = pixman_fixed_to_int (y - pixman_fixed_e - y_off); + x2 = x1 + cwidth; + y2 = y1 + cheight; + + satot = srtot = sgtot = sbtot = 0; + + y_params = params + 4 + (1 << x_phase_bits) * cwidth + py * cheight; + + for (i = y1; i < y2; ++i) + { + pixman_fixed_t fy = *y_params++; + + if (fy) + { + pixman_fixed_t *x_params = params + 4 + px * cwidth; + + for (j = x1; j < x2; ++j) + { + pixman_fixed_t fx = *x_params++; + int rx = j; + int ry = i; + + if (fx) + { + pixman_fixed_t f; + uint32_t pixel, mask; + uint8_t *row; + + mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; + + if (repeat_mode != PIXMAN_REPEAT_NONE) + { + repeat (repeat_mode, &rx, bits->width); + repeat (repeat_mode, &ry, bits->height); + + row = (uint8_t *)bits->bits + bits->rowstride * 4 * ry; + pixel = convert_pixel (row, rx) | mask; + } + else + { + if (rx < 0 || ry < 0 || rx >= bits->width || ry >= bits->height) + { + pixel = 0; + } + else + { + row = (uint8_t *)bits->bits + bits->rowstride * 4 * ry; + pixel = convert_pixel (row, rx) | mask; + } + } + + f = ((pixman_fixed_32_32_t)fx * fy + 0x8000) >> 16; + srtot += (int)RED_8 (pixel) * f; + sgtot += (int)GREEN_8 (pixel) * f; + sbtot += (int)BLUE_8 (pixel) * f; + satot += (int)ALPHA_8 (pixel) * f; + } + } + } + } + + satot = (satot + 0x8000) >> 16; + srtot = (srtot + 0x8000) >> 16; + sgtot = (sgtot + 0x8000) >> 16; + sbtot = (sbtot + 0x8000) >> 16; + + satot = CLIP (satot, 0, 0xff); + srtot = CLIP (srtot, 0, 0xff); + sgtot = CLIP (sgtot, 0, 0xff); + sbtot = CLIP (sbtot, 0, 0xff); + + buffer[k] = (satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot << 0); + + next: + vx += ux; + vy += uy; + } +} + +static const uint8_t zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + +static force_inline void +bits_image_fetch_bilinear_affine (pixman_image_t * image, + int offset, + int line, + int width, + uint32_t * buffer, + const uint32_t * mask, + + convert_pixel_t convert_pixel, + pixman_format_code_t format, + pixman_repeat_t repeat_mode) +{ + pixman_fixed_t x, y; + pixman_fixed_t ux, uy; + pixman_vector_t v; + bits_image_t *bits = &image->bits; + int i; + + /* reference point is the center of the pixel */ + v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; + v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; + v.vector[2] = pixman_fixed_1; + + if (!pixman_transform_point_3d (image->common.transform, &v)) + return; + + ux = image->common.transform->matrix[0][0]; + uy = image->common.transform->matrix[1][0]; + + x = v.vector[0]; + y = v.vector[1]; + + for (i = 0; i < width; ++i) + { + int x1, y1, x2, y2; + uint32_t tl, tr, bl, br; + int32_t distx, disty; + int width = image->bits.width; + int height = image->bits.height; + const uint8_t *row1; + const uint8_t *row2; + + if (mask && !mask[i]) + goto next; + + x1 = x - pixman_fixed_1 / 2; + y1 = y - pixman_fixed_1 / 2; + + distx = pixman_fixed_to_bilinear_weight (x1); + disty = pixman_fixed_to_bilinear_weight (y1); + + y1 = pixman_fixed_to_int (y1); + y2 = y1 + 1; + x1 = pixman_fixed_to_int (x1); + x2 = x1 + 1; + + if (repeat_mode != PIXMAN_REPEAT_NONE) + { + uint32_t mask; + + mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; + + repeat (repeat_mode, &x1, width); + repeat (repeat_mode, &y1, height); + repeat (repeat_mode, &x2, width); + repeat (repeat_mode, &y2, height); + + row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1; + row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2; + + tl = convert_pixel (row1, x1) | mask; + tr = convert_pixel (row1, x2) | mask; + bl = convert_pixel (row2, x1) | mask; + br = convert_pixel (row2, x2) | mask; + } + else + { + uint32_t mask1, mask2; + int bpp; + + /* Note: PIXMAN_FORMAT_BPP() returns an unsigned value, + * which means if you use it in expressions, those + * expressions become unsigned themselves. Since + * the variables below can be negative in some cases, + * that will lead to crashes on 64 bit architectures. + * + * So this line makes sure bpp is signed + */ + bpp = PIXMAN_FORMAT_BPP (format); + + if (x1 >= width || x2 < 0 || y1 >= height || y2 < 0) + { + buffer[i] = 0; + goto next; + } + + if (y2 == 0) + { + row1 = zero; + mask1 = 0; + } + else + { + row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1; + row1 += bpp / 8 * x1; + + mask1 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; + } + + if (y1 == height - 1) + { + row2 = zero; + mask2 = 0; + } + else + { + row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2; + row2 += bpp / 8 * x1; + + mask2 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; + } + + if (x2 == 0) + { + tl = 0; + bl = 0; + } + else + { + tl = convert_pixel (row1, 0) | mask1; + bl = convert_pixel (row2, 0) | mask2; + } + + if (x1 == width - 1) + { + tr = 0; + br = 0; + } + else + { + tr = convert_pixel (row1, 1) | mask1; + br = convert_pixel (row2, 1) | mask2; + } + } + + buffer[i] = bilinear_interpolation ( + tl, tr, bl, br, distx, disty); + + next: + x += ux; + y += uy; + } +} + +static force_inline void +bits_image_fetch_nearest_affine (pixman_image_t * image, + int offset, + int line, + int width, + uint32_t * buffer, + const uint32_t * mask, + + convert_pixel_t convert_pixel, + pixman_format_code_t format, + pixman_repeat_t repeat_mode) +{ + pixman_fixed_t x, y; + pixman_fixed_t ux, uy; + pixman_vector_t v; + bits_image_t *bits = &image->bits; + int i; + + /* reference point is the center of the pixel */ + v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2; + v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2; + v.vector[2] = pixman_fixed_1; + + if (!pixman_transform_point_3d (image->common.transform, &v)) + return; + + ux = image->common.transform->matrix[0][0]; + uy = image->common.transform->matrix[1][0]; + + x = v.vector[0]; + y = v.vector[1]; + + for (i = 0; i < width; ++i) + { + int width, height, x0, y0; + const uint8_t *row; + + if (mask && !mask[i]) + goto next; + + width = image->bits.width; + height = image->bits.height; + x0 = pixman_fixed_to_int (x - pixman_fixed_e); + y0 = pixman_fixed_to_int (y - pixman_fixed_e); + + if (repeat_mode == PIXMAN_REPEAT_NONE && + (y0 < 0 || y0 >= height || x0 < 0 || x0 >= width)) + { + buffer[i] = 0; + } + else + { + uint32_t mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000; + + if (repeat_mode != PIXMAN_REPEAT_NONE) + { + repeat (repeat_mode, &x0, width); + repeat (repeat_mode, &y0, height); + } + + row = (uint8_t *)bits->bits + bits->rowstride * 4 * y0; + + buffer[i] = convert_pixel (row, x0) | mask; + } + + next: + x += ux; + y += uy; + } +} + +static force_inline uint32_t +convert_a8r8g8b8 (const uint8_t *row, int x) +{ + return *(((uint32_t *)row) + x); +} + +static force_inline uint32_t +convert_x8r8g8b8 (const uint8_t *row, int x) +{ + return *(((uint32_t *)row) + x); +} + +static force_inline uint32_t +convert_a8 (const uint8_t *row, int x) +{ + return *(row + x) << 24; +} + +static force_inline uint32_t +convert_r5g6b5 (const uint8_t *row, int x) +{ + return convert_0565_to_0888 (*((uint16_t *)row + x)); +} + +#define MAKE_SEPARABLE_CONVOLUTION_FETCHER(name, format, repeat_mode) \ + static uint32_t * \ + bits_image_fetch_separable_convolution_affine_ ## name (pixman_iter_t *iter, \ + const uint32_t * mask) \ + { \ + bits_image_fetch_separable_convolution_affine ( \ + iter->image, \ + iter->x, iter->y++, \ + iter->width, \ + iter->buffer, mask, \ + convert_ ## format, \ + PIXMAN_ ## format, \ + repeat_mode); \ + \ + return iter->buffer; \ + } + +#define MAKE_BILINEAR_FETCHER(name, format, repeat_mode) \ + static uint32_t * \ + bits_image_fetch_bilinear_affine_ ## name (pixman_iter_t *iter, \ + const uint32_t * mask) \ + { \ + bits_image_fetch_bilinear_affine (iter->image, \ + iter->x, iter->y++, \ + iter->width, \ + iter->buffer, mask, \ + convert_ ## format, \ + PIXMAN_ ## format, \ + repeat_mode); \ + return iter->buffer; \ + } + +#define MAKE_NEAREST_FETCHER(name, format, repeat_mode) \ + static uint32_t * \ + bits_image_fetch_nearest_affine_ ## name (pixman_iter_t *iter, \ + const uint32_t * mask) \ + { \ + bits_image_fetch_nearest_affine (iter->image, \ + iter->x, iter->y++, \ + iter->width, \ + iter->buffer, mask, \ + convert_ ## format, \ + PIXMAN_ ## format, \ + repeat_mode); \ + return iter->buffer; \ + } + +#define MAKE_FETCHERS(name, format, repeat_mode) \ + MAKE_NEAREST_FETCHER (name, format, repeat_mode) \ + MAKE_BILINEAR_FETCHER (name, format, repeat_mode) \ + MAKE_SEPARABLE_CONVOLUTION_FETCHER (name, format, repeat_mode) + +MAKE_FETCHERS (pad_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_PAD) +MAKE_FETCHERS (none_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NONE) +MAKE_FETCHERS (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT) +MAKE_FETCHERS (normal_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NORMAL) +MAKE_FETCHERS (pad_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_PAD) +MAKE_FETCHERS (none_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NONE) +MAKE_FETCHERS (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT) +MAKE_FETCHERS (normal_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NORMAL) +MAKE_FETCHERS (pad_a8, a8, PIXMAN_REPEAT_PAD) +MAKE_FETCHERS (none_a8, a8, PIXMAN_REPEAT_NONE) +MAKE_FETCHERS (reflect_a8, a8, PIXMAN_REPEAT_REFLECT) +MAKE_FETCHERS (normal_a8, a8, PIXMAN_REPEAT_NORMAL) +MAKE_FETCHERS (pad_r5g6b5, r5g6b5, PIXMAN_REPEAT_PAD) +MAKE_FETCHERS (none_r5g6b5, r5g6b5, PIXMAN_REPEAT_NONE) +MAKE_FETCHERS (reflect_r5g6b5, r5g6b5, PIXMAN_REPEAT_REFLECT) +MAKE_FETCHERS (normal_r5g6b5, r5g6b5, PIXMAN_REPEAT_NORMAL) + #define IMAGE_FLAGS \ (FAST_PATH_STANDARD_FLAGS | FAST_PATH_ID_TRANSFORM | \ FAST_PATH_BITS_IMAGE | FAST_PATH_SAMPLES_COVER_CLIP_NEAREST) @@ -2521,6 +3191,92 @@ static const pixman_iter_info_t fast_iters[] = NULL, NULL }, +#define FAST_BILINEAR_FLAGS \ + (FAST_PATH_NO_ALPHA_MAP | \ + FAST_PATH_NO_ACCESSORS | \ + FAST_PATH_HAS_TRANSFORM | \ + FAST_PATH_AFFINE_TRANSFORM | \ + FAST_PATH_X_UNIT_POSITIVE | \ + FAST_PATH_Y_UNIT_ZERO | \ + FAST_PATH_NONE_REPEAT | \ + FAST_PATH_BILINEAR_FILTER) + + { PIXMAN_a8r8g8b8, + FAST_BILINEAR_FLAGS, + ITER_NARROW | ITER_SRC, + NULL, bits_image_fetch_bilinear_no_repeat_8888, NULL + }, + + { PIXMAN_x8r8g8b8, + FAST_BILINEAR_FLAGS, + ITER_NARROW | ITER_SRC, + NULL, bits_image_fetch_bilinear_no_repeat_8888, NULL + }, + +#define GENERAL_BILINEAR_FLAGS \ + (FAST_PATH_NO_ALPHA_MAP | \ + FAST_PATH_NO_ACCESSORS | \ + FAST_PATH_HAS_TRANSFORM | \ + FAST_PATH_AFFINE_TRANSFORM | \ + FAST_PATH_BILINEAR_FILTER) + +#define GENERAL_NEAREST_FLAGS \ + (FAST_PATH_NO_ALPHA_MAP | \ + FAST_PATH_NO_ACCESSORS | \ + FAST_PATH_HAS_TRANSFORM | \ + FAST_PATH_AFFINE_TRANSFORM | \ + FAST_PATH_NEAREST_FILTER) + +#define GENERAL_SEPARABLE_CONVOLUTION_FLAGS \ + (FAST_PATH_NO_ALPHA_MAP | \ + FAST_PATH_NO_ACCESSORS | \ + FAST_PATH_HAS_TRANSFORM | \ + FAST_PATH_AFFINE_TRANSFORM | \ + FAST_PATH_SEPARABLE_CONVOLUTION_FILTER) + +#define SEPARABLE_CONVOLUTION_AFFINE_FAST_PATH(name, format, repeat) \ + { PIXMAN_ ## format, \ + ITER_NARROW | ITER_SRC, \ + GENERAL_SEPARABLE_CONVOLUTION_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ + NULL, bits_image_fetch_separable_convolution_affine_ ## name, NULL \ + }, + +#define BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \ + { PIXMAN_ ## format, \ + ITER_NARROW | ITER_SRC, \ + GENERAL_BILINEAR_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ + NULL, bits_image_fetch_bilinear_affine_ ## name, NULL, \ + }, + +#define NEAREST_AFFINE_FAST_PATH(name, format, repeat) \ + { PIXMAN_ ## format, \ + ITER_NARROW | ITER_SRC, \ + GENERAL_NEAREST_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \ + NULL, bits_image_fetch_nearest_affine_ ## name, NULL \ + }, + +#define AFFINE_FAST_PATHS(name, format, repeat) \ + SEPARABLE_CONVOLUTION_AFFINE_FAST_PATH(name, format, repeat) \ + BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \ + NEAREST_AFFINE_FAST_PATH(name, format, repeat) + + AFFINE_FAST_PATHS (pad_a8r8g8b8, a8r8g8b8, PAD) + AFFINE_FAST_PATHS (none_a8r8g8b8, a8r8g8b8, NONE) + AFFINE_FAST_PATHS (reflect_a8r8g8b8, a8r8g8b8, REFLECT) + AFFINE_FAST_PATHS (normal_a8r8g8b8, a8r8g8b8, NORMAL) + AFFINE_FAST_PATHS (pad_x8r8g8b8, x8r8g8b8, PAD) + AFFINE_FAST_PATHS (none_x8r8g8b8, x8r8g8b8, NONE) + AFFINE_FAST_PATHS (reflect_x8r8g8b8, x8r8g8b8, REFLECT) + AFFINE_FAST_PATHS (normal_x8r8g8b8, x8r8g8b8, NORMAL) + AFFINE_FAST_PATHS (pad_a8, a8, PAD) + AFFINE_FAST_PATHS (none_a8, a8, NONE) + AFFINE_FAST_PATHS (reflect_a8, a8, REFLECT) + AFFINE_FAST_PATHS (normal_a8, a8, NORMAL) + AFFINE_FAST_PATHS (pad_r5g6b5, r5g6b5, PAD) + AFFINE_FAST_PATHS (none_r5g6b5, r5g6b5, NONE) + AFFINE_FAST_PATHS (reflect_r5g6b5, r5g6b5, REFLECT) + AFFINE_FAST_PATHS (normal_r5g6b5, r5g6b5, NORMAL) + { PIXMAN_null }, }; diff --git a/pixman/pixman/pixman-ssse3.c b/pixman/pixman/pixman-ssse3.c index 34763e20b..680d6b95a 100644 --- a/pixman/pixman/pixman-ssse3.c +++ b/pixman/pixman/pixman-ssse3.c @@ -43,8 +43,7 @@ typedef struct typedef struct { - line_t line0; - line_t line1; + line_t lines[2]; pixman_fixed_t y; pixman_fixed_t x; uint64_t data[1]; @@ -172,29 +171,19 @@ ssse3_fetch_bilinear_cover (pixman_iter_t *iter, const uint32_t *mask) y0 = pixman_fixed_to_int (info->y); y1 = y0 + 1; - line0 = &info->line0; - line1 = &info->line1; + line0 = &info->lines[y0 & 0x01]; + line1 = &info->lines[y1 & 0x01]; - if (line0->y != y0 || line1->y != y1) + if (line0->y != y0) { - if (line0->y == y1 || line1->y == y0) - { - line_t tmp = *line0; - *line0 = *line1; - *line1 = tmp; - } - - if (line0->y != y0) - { - ssse3_fetch_horizontal ( - &iter->image->bits, line0, y0, fx, ux, iter->width); - } + ssse3_fetch_horizontal ( + &iter->image->bits, line0, y0, fx, ux, iter->width); + } - if (line1->y != y1) - { - ssse3_fetch_horizontal ( - &iter->image->bits, line1, y1, fx, ux, iter->width); - } + if (line1->y != y1) + { + ssse3_fetch_horizontal ( + &iter->image->bits, line1, y1, fx, ux, iter->width); } dist_y = pixman_fixed_to_bilinear_weight (info->y); @@ -308,10 +297,10 @@ ssse3_bilinear_cover_iter_init (pixman_iter_t *iter, const pixman_iter_info_t *i * because COVER_CLIP_BILINEAR ensures that we will only * be asked to fetch lines in the [0, height) interval */ - info->line0.y = -1; - info->line0.buffer = ALIGN (&(info->data[0])); - info->line1.y = -1; - info->line1.buffer = ALIGN (info->line0.buffer + width); + info->lines[0].y = -1; + info->lines[0].buffer = ALIGN (&(info->data[0])); + info->lines[1].y = -1; + info->lines[1].buffer = ALIGN (info->lines[0].buffer + width); iter->get_scanline = ssse3_fetch_bilinear_cover; iter->fini = ssse3_bilinear_cover_iter_fini; diff --git a/pixman/test/blitters-test.c b/pixman/test/blitters-test.c index af948350b..920cbbbd7 100644 --- a/pixman/test/blitters-test.c +++ b/pixman/test/blitters-test.c @@ -244,7 +244,7 @@ test_composite (int testnum, int verbose) int w, h; pixman_op_t op; pixman_format_code_t src_fmt, dst_fmt, mask_fmt; - uint32_t *dstbuf, *srcbuf, *maskbuf; + uint32_t *srcbuf, *maskbuf; uint32_t crc32; int max_width, max_height, max_extra_stride; FLOAT_REGS_CORRUPTION_DETECTOR_START (); @@ -291,7 +291,6 @@ test_composite (int testnum, int verbose) dst_height = pixman_image_get_height (dst_img); dst_stride = pixman_image_get_stride (dst_img); - dstbuf = pixman_image_get_data (dst_img); srcbuf = pixman_image_get_data (src_img); src_x = prng_rand_n (src_width); diff --git a/pixman/test/utils.c b/pixman/test/utils.c index 34007476b..0cd982e73 100644 --- a/pixman/test/utils.c +++ b/pixman/test/utils.c @@ -251,6 +251,7 @@ print_image (pixman_image_t *image) int width, height, stride; pixman_format_code_t format; uint8_t *buffer; + int s; width = pixman_image_get_width (image); height = pixman_image_get_height (image); @@ -258,13 +259,12 @@ print_image (pixman_image_t *image) format = pixman_image_get_format (image); buffer = (uint8_t *)pixman_image_get_data (image); - if (stride < 0) - stride = - stride; + s = (stride >= 0)? stride : - stride; printf ("---\n"); for (i = 0; i < height; i++) { - for (j = 0; j < stride; j++) + for (j = 0; j < s; j++) { if (j == (width * PIXMAN_FORMAT_BPP (format) + 7) / 8) printf ("| "); @@ -297,11 +297,12 @@ image_endian_swap (pixman_image_t *img) for (i = 0; i < height; i++) { uint8_t *line_data = (uint8_t *)data + stride * i; - + int s = (stride >= 0)? stride : - stride; + switch (bpp) { case 1: - for (j = 0; j < stride; j++) + for (j = 0; j < s; j++) { line_data[j] = ((line_data[j] & 0x80) >> 7) | @@ -315,13 +316,13 @@ image_endian_swap (pixman_image_t *img) } break; case 4: - for (j = 0; j < stride; j++) + for (j = 0; j < s; j++) { line_data[j] = (line_data[j] >> 4) | (line_data[j] << 4); } break; case 16: - for (j = 0; j + 2 <= stride; j += 2) + for (j = 0; j + 2 <= s; j += 2) { char t1 = line_data[j + 0]; char t2 = line_data[j + 1]; @@ -331,7 +332,7 @@ image_endian_swap (pixman_image_t *img) } break; case 24: - for (j = 0; j + 3 <= stride; j += 3) + for (j = 0; j + 3 <= s; j += 3) { char t1 = line_data[j + 0]; char t2 = line_data[j + 1]; @@ -343,7 +344,7 @@ image_endian_swap (pixman_image_t *img) } break; case 32: - for (j = 0; j + 4 <= stride; j += 4) + for (j = 0; j + 4 <= s; j += 4) { char t1 = line_data[j + 0]; char t2 = line_data[j + 1]; diff --git a/xorg-server/xkeyboard-config/AUTHORS b/xorg-server/xkeyboard-config/AUTHORS index 451e9c08d..1b4b7b672 100644 --- a/xorg-server/xkeyboard-config/AUTHORS +++ b/xorg-server/xkeyboard-config/AUTHORS @@ -1,8 +1,15 @@ +== Initiator and maintainer: Сергей Удальцов (Sergey Udaltsov) <svu@users.sourceforge.net> +== Major contributions by: Andriy Rysin <arysin@myrealbox.com> Denis Barbier <barbier@linuxfr.org> Frank Murphy <murphyf+xfree86@f-m.fm> Ivan Pascal <pascal@info.tsu.ru> Nicolas Mailhot <nicolas.mailhot@laposte.net> Данило Шеган <dsegan@gmx.net> + +== Substantial contributions by: +Ivan A Derzhanski <iad@math.bas.bg> +Runa Aruna <runa_aruna@yahoo.com> +Frédéric BOITEUX <fboiteux@calistel.com> diff --git a/xorg-server/xkeyboard-config/BUGS b/xorg-server/xkeyboard-config/BUGS deleted file mode 100644 index cb48ff636..000000000 --- a/xorg-server/xkeyboard-config/BUGS +++ /dev/null @@ -1,70 +0,0 @@ --- Freedesktop.ORG - -http://freedesktop.org/bugzilla/show_bug.cgi?id=320 -http://bugs.xfree86.org/show_bug.cgi?id=1155 - - DONE: Added microsoftprousb - -http://freedesktop.org/bugzilla/show_bug.cgi?id=326 -http://bugs.xfree86.org/show_bug.cgi?id=1227 - - ?: Which of 'inet' files is right? - -http://freedesktop.org/bugzilla/show_bug.cgi?id=365 - - DONE: Two keysyms swapped in us(intl) - -http://freedesktop.org/bugzilla/show_bug.cgi?id=371 - - ?: What exactly is broken? Some patch would be nice - -http://freedesktop.org/bugzilla/show_bug.cgi?id=458 - - DONE: Changed Farsi to Iranian - -http://freedesktop.org/bugzilla/show_bug.cgi?id=463 - - ?: Don't know how to fix, really. Let's see. - -http://freedesktop.org/bugzilla/show_bug.cgi?id=496 - - DONE: Added Gyration Compact Keyboard - -http://freedesktop.org/bugzilla/show_bug.cgi?id=574 - - DONE: The patch applied - -http://freedesktop.org/bugzilla/show_bug.cgi?id=587 - - ?: Which of altwin options should be included? - Some part of meta_win is already there - -http://freedesktop.org/bugzilla/show_bug.cgi?id=630 - - DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added - -http://freedesktop.org/bugzilla/show_bug.cgi?id=666 - - DONE: Long ago added alt_super_win - -http://freedesktop.org/bugzilla/show_bug.cgi?id=711 - - DONE: Added Super Power Multimedia Keyboard - -http://freedesktop.org/bugzilla/show_bug.cgi?id=743 - - DONE: Armenian fixed - -http://freedesktop.org/bugzilla/show_bug.cgi?id=744 - - DONE: Model a4techKB21 added - -http://freedesktop.org/bugzilla/show_bug.cgi?id=926 - - TODO: --- GNOME - -http://bugzilla.gnome.org/show_bug.cgi?id=144646 -http://bugs.xfree86.org/show_bug.cgi?id=1415 - - DONE: Fixed, thanks to Dmitry diff --git a/xorg-server/xkeyboard-config/CREDITS b/xorg-server/xkeyboard-config/CREDITS deleted file mode 100644 index 7a05b27ec..000000000 --- a/xorg-server/xkeyboard-config/CREDITS +++ /dev/null @@ -1,3 +0,0 @@ -Ivan A Derzhanski <iad@math.bas.bg> -Runa Aruna <runa_aruna@yahoo.com> -Fr?d?ric BOITEUX <fboiteux@calistel.com> diff --git a/xorg-server/xkeyboard-config/symbols/am b/xorg-server/xkeyboard-config/symbols/am index abe6e1270..c3be81db0 100644 --- a/xorg-server/xkeyboard-config/symbols/am +++ b/xorg-server/xkeyboard-config/symbols/am @@ -5,10 +5,9 @@ xkb_symbols "basic" { name[Group1]= "Armenian"; - // Alphanumeric section - key <TLDE> { [ 0x100055d, 0x100055c ] }; - key <LSGT> { [ question, 0x100058a ] }; - key <BKSL> { [ guillemotright, guillemotleft ] }; + key <TLDE> { [ 0x100055d, 0x100055c ] }; + key <LSGT> { [ question, 0x100058a ] }; + key <BKSL> { [ guillemotright, guillemotleft]}; key <AE01> { [ 0x1000586, 0x1000556 ] }; key <AE02> { [ 0x1000571, 0x1000541 ] }; @@ -23,7 +22,6 @@ xkb_symbols "basic" { key <AE11> { [ 0x1000567, 0x1000537 ] }; key <AE12> { [ 0x1000572, 0x1000542 ] }; - key <AD01> { [ 0x1000573, 0x1000543 ] }; key <AD02> { [ 0x1000583, 0x1000553 ] }; key <AD03> { [ 0x1000562, 0x1000532 ] }; @@ -152,23 +150,22 @@ xkb_symbols "eastern" { // This is the closer phonetic transliteration for Eastern Armenian // than the Windows XP layout for Eastern Armenian, which seems - // to have contained a bug, with the reversal of 'g' for keh and 'c' for gim - // Also, AE01 (the colon) has been replaced with the Armenian_full_stop and - // capital AE07 (ken) with the Armenian ligature ew + // to have contained a bug, with the reversal of 'g' for keh and 'c' for gim. + // Also, AE01 (the colon) has been replaced with the Armenian_full_stop, + // and capital AE07 (ken) with the Armenian ligature ew. key <TLDE> { [ Armenian_separation_mark, Armenian_exclam ] }; -// key <AE01> { [ colon, KP_1 ] }; - key <AE01> { [ Armenian_full_stop, KP_1 ] }; + key <AE01> { [ Armenian_full_stop, KP_1 ] }; key <AE02> { [ Armenian_dza, Armenian_DZA ] }; key <AE03> { [ Armenian_hi, Armenian_HI ] }; - key <AE04> { [ Armenian_accent, KP_3 ] }; - key <AE05> { [ comma, KP_4 ] }; - key <AE06> { [ minus, KP_9 ] }; + key <AE04> { [ Armenian_accent, KP_3 ] }; + key <AE05> { [ comma, KP_4 ] }; + key <AE06> { [ minus, KP_9 ] }; key <AE07> { [ period, Armenian_ligature_ew ] }; key <AE08> { [ guillemotleft, parenleft ] }; key <AE09> { [ guillemotright, parenright ] }; key <AE10> { [ Armenian_o, Armenian_O ] }; - key <AE11> { [ Armenian_ra, Armenian_RA ] }; + key <AE11> { [ Armenian_ra, Armenian_RA ] }; key <AE12> { [ Armenian_zhe, Armenian_ZHE ] }; key <LatQ> { [ Armenian_khe, Armenian_KHE ] }; @@ -204,8 +201,8 @@ xkb_symbols "eastern" { key <LatB> { [ Armenian_ben, Armenian_BEN ] }; key <LatN> { [ Armenian_nu, Armenian_NU ] }; key <LatM> { [ Armenian_men, Armenian_MEN ] }; - key <AB08> { [ Armenian_sha, Armenian_SHA ] }; - key <AB09> { [ Armenian_ghat, Armenian_GHAT ] }; + key <AB08> { [ Armenian_sha, Armenian_SHA ] }; + key <AB09> { [ Armenian_ghat, Armenian_GHAT ] }; key <AB10> { [ Armenian_tsa, Armenian_TSA ] }; }; diff --git a/xorg-server/xkeyboard-config/symbols/ara b/xorg-server/xkeyboard-config/symbols/ara index 1944b25ce..f39fddb56 100644 --- a/xorg-server/xkeyboard-config/symbols/ara +++ b/xorg-server/xkeyboard-config/symbols/ara @@ -61,8 +61,6 @@ xkb_symbols "basic" { key <AB08> { [ Arabic_waw, comma ] }; key <AB09> { [ Arabic_zain, period ] }; key <AB10> { [ Arabic_zah, Arabic_question_mark ] }; - - // End alphanumeric section }; partial alphanumeric_keys @@ -117,7 +115,7 @@ xkb_symbols "digits_KP" { key <KP2> { [ KP_Down, 0x1000662 ] }; // key <KP3> { [ KP_Next, 0x1000663 ] }; // - key <KP0> { [ KP_Insert, 0x1000660 ] }; // + key <KP0> { [ KP_Insert, 0x1000660 ] }; // }; partial alphanumeric_keys @@ -235,8 +233,6 @@ xkb_symbols "buckwalter" { // ARABIC FULL STOP (Urdu) key <AB09> { [ 0x10006d4, Arabic_hamzaonalef ] }; key <AB10> { [ VoidSymbol, Arabic_question_mark ] }; - - // End alphanumeric section }; partial alphanumeric_keys @@ -244,21 +240,21 @@ xkb_symbols "olpc" { include "ara(basic)" - // As part of the olpc design some changes were made to the Arabic + // As part of the OLPC design, some changes were made to the Arabic // keyboard design. Major changes are: // - // * Removed the lam-alef single character. Poeple type as they + // * Removed the lam-alef single character. People type as they // pronounce, and lam-alef is just a visual formatting of the // sequence and is not often used on the keyboard. It is // similar to the Allah single character, which is also not on // the keyboard. // * Moved the following keys: - // o Thal from TLDE to AB05: Due to space limitation on the - // keybaord, but also accessibility - // o Shadda from TLDE to AD05 + // o Thal from TLDE to AB05: due to space limitation on the + // keyboard, but also accessibility. + // o Shadda from TLDE to AD05. // * Placed currency letters on number keys and moved the ^ and & - // characters to lower keys (This change is worth revisiting - // before end of test period) + // characters to lower keys. (This change is worth revisiting + // before end of test period). key <TLDE> { [ grave, asciitilde ] }; @@ -287,7 +283,6 @@ xkb_symbols "olpc" { key <BKSL> { [ backslash, bar ] }; - // REH isolated form? key <AB03> { [ Arabic_hamzaonwaw, Arabic_kasra ] }; key <AB04> { [ Arabic_ra, Arabic_kasratan ] }; diff --git a/xorg-server/xkeyboard-config/symbols/az b/xorg-server/xkeyboard-config/symbols/az index 3c399cf96..2dab93a3c 100644 --- a/xorg-server/xkeyboard-config/symbols/az +++ b/xorg-server/xkeyboard-config/symbols/az @@ -1,5 +1,4 @@ -// based on: -// symbols definition for a very simple Azerbaidjani keyboard layout. +// Symbols definition for a very simple Azerbaidjani keyboard layout. // 2001 - Pablo Saratxaga <pablo@mandrakesoft.com> partial default alphanumeric_keys @@ -32,9 +31,8 @@ xkb_symbols "latin" { key <AB08> { [ ccedilla, Ccedilla ] }; key <AB09> { [ scedilla, Scedilla ] }; key <AB10> { [ period, comma ] }; - // End alphanumeric section - include "level3(ralt_switch)" + include "level3(ralt_switch)" }; partial alphanumeric_keys @@ -87,6 +85,4 @@ xkb_symbols "cyrillic" { key <AB08> {[ Cyrillic_be, Cyrillic_BE ] }; key <AB09> {[ Cyrillic_o_bar, Cyrillic_O_bar ] }; key <AB10> {[ period, comma ] }; - - // End alphanumeric section }; diff --git a/xorg-server/xkeyboard-config/symbols/ca b/xorg-server/xkeyboard-config/symbols/ca index e93995302..b039c48ff 100644 --- a/xorg-server/xkeyboard-config/symbols/ca +++ b/xorg-server/xkeyboard-config/symbols/ca @@ -323,8 +323,6 @@ xkb_symbols "ike" { key <TLDE> { [ 0x0100157b, 0x01001575 ] }; key <LSGT> { [ 0x01001579, 0x01001577 ] }; key <BKSL> { [ backslash, bar ] }; - -// End alphanumeric section }; partial @@ -477,13 +475,11 @@ xkb_symbols "eng" { partial alphanumeric_keys xkb_symbols "kut" { - //Ejective U0313 and compose accents are from shs layout + // Ejective U0313 and acute accents are taken from shs layout. include "ca(shs)" name[Group1]= "Kutenai"; - // Alphanumeric section - // Alveolar Click key <AD05> { [ t, T,U01C2 ,U01C2 ] }; @@ -505,7 +501,6 @@ xkb_symbols "kut" { // Secwepemctsin keyboard for X11 // written by Neskie Manuel <neskiem@gmail.com> - partial alphanumeric_keys xkb_symbols "shs" { @@ -513,9 +508,9 @@ xkb_symbols "shs" { name[Group1]= "Secwepemctsin"; - //Using Dead key to get COMBINING COMMA ABOVE for ejectives on - //q, l, t, s, m, g, k, p, w, y, r - //XCompose key is used for the other accute and grave. + // Using a "dead key" to get a COMBINING COMMA ABOVE + // for ejectives on q, l, t, s, m, g, k, p, w, y, r. + // The Compose key is used for the other acutes and grave. key <AB08> { [ comma, less, U0313 ] }; key <AC01> { [ a, A, aacute, Aacute ] }; diff --git a/xorg-server/xkeyboard-config/symbols/cd b/xorg-server/xkeyboard-config/symbols/cd index a4f2fa2d2..384422ac4 100644 --- a/xorg-server/xkeyboard-config/symbols/cd +++ b/xorg-server/xkeyboard-config/symbols/cd @@ -8,9 +8,8 @@ xkb_symbols "basic" { key.type[Group1] = "FOUR_LEVEL"; - // Alphanumeric section - // TILDE, COMBINING TILDE - key <TLDE> { [ grave, asciitilde, 0x01000303] }; + // GRAVE, TILDE, COMBINING TILDE + key <TLDE> { [ grave, asciitilde, 0x01000303 ] }; key <AE01> { [ ampersand, 1, numbersign ] }; key <AE02> { [0x01000301, 2, at ] }; key <AE03> { [0x01000300, 3, guillemotleft ] }; @@ -34,8 +33,8 @@ xkb_symbols "basic" { key <AD08> { [ i, I, 0x01000268, 0x01000197 ] }; key <AD09> { [ o, O, oslash, Ooblique ] }; key <AD10> { [ p, P ] }; - key <AD11> { [0x0100025B, 0x01000190, asciicircum ] }; - key <AD12> { [ asterisk, asciicircum, dollar ] }; + key <AD11> { [0x0100025B, 0x01000190, asciicircum ] }; + key <AD12> { [ asterisk, asciicircum, dollar ] }; key <AC01> { [ q, Q ] }; key <AC02> { [ s, S ] }; @@ -47,22 +46,22 @@ xkb_symbols "basic" { key <AC08> { [ k, K ] }; key <AC09> { [ l, L ] }; key <AC10> { [ m, M ] }; - key <AC11> { [0x01000254, 0x01000186 ] }; - key <LSGT> { [ backslash, bar ] }; + key <AC11> { [0x01000254, 0x01000186 ] }; + key <LSGT> { [ backslash, bar ] }; key <AB01> { [ w, W ] }; key <AB02> { [ x, X ] }; key <AB03> { [ c, C ] }; key <AB04> { [ v, V ] }; key <AB05> { [ b, B ] }; - key <AB06> { [ n, N, 0x0100014B, 0x0100014A ] }; - key <AB07> { [ comma, question, 0x01000327 ] }; + key <AB06> { [ n, N, 0x0100014B, 0x0100014A ] }; + key <AB07> { [ comma, question, 0x01000327 ] }; key <AB08> { [ semicolon, period ] }; key <AB09> { [ colon, slash ] }; - key <AB10> { [ exclam, apostrophe, 0x01002019 ] }; - key <BKSL> { [ quotedbl, backslash, bar ] }; + key <AB10> { [ exclam, apostrophe, 0x01002019 ] }; + key <BKSL> { [ quotedbl, backslash, bar ] }; - // SPACE, SPACE, SPACE, NO-BREAK SPACE, SPACE + // SPACE, SPACE, NO-BREAK SPACE, NARROW NO_BREAK SPACE key <SPCE> { [ space, space, nobreakspace, 0x0100202F ] }; include "level3(ralt_switch)" diff --git a/xorg-server/xkeyboard-config/symbols/ch b/xorg-server/xkeyboard-config/symbols/ch index 989a2df27..59174076e 100644 --- a/xorg-server/xkeyboard-config/symbols/ch +++ b/xorg-server/xkeyboard-config/symbols/ch @@ -2,9 +2,8 @@ partial default alphanumeric_keys xkb_symbols "basic" { include "latin" - - // Alphanumeric section name[Group1]= "German (Switzerland)"; + key <TLDE> { [ section, degree ] }; key <AE01> { [ 1, plus, bar, exclamdown ] }; key <AE02> { [ 2, quotedbl, at, oneeighth ] }; @@ -78,9 +77,6 @@ xkb_symbols "de_nodeadkeys" { partial alphanumeric_keys xkb_symbols "fr" { - // Describes the differences between a very simple US/ASCII - // keyboard and a very simple Swiss/French keybaord - include "ch(basic)" name[Group1]= "French (Switzerland)"; @@ -130,8 +126,6 @@ xkb_symbols "de_mac" { name[Group1]= "German (Switzerland, Macintosh)"; - // Alphanumeric section - key <AE01> { [ 1, plus, plusminus, infinity ] }; key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] }; key <AE03> { [ 3, asterisk, numbersign, leftcaret ] }; @@ -195,9 +189,6 @@ xkb_symbols "de_mac" { partial alphanumeric_keys xkb_symbols "fr_mac" { - // Describes the differences between a very simple US/ASCII - // keyboard and a very simple Swiss/French keybaord - include "ch(de_mac)" name[Group1]= "French (Switzerland, Macintosh)"; diff --git a/xorg-server/xkeyboard-config/symbols/cm b/xorg-server/xkeyboard-config/symbols/cm index 9b2da163c..cdc8577e0 100644 --- a/xorg-server/xkeyboard-config/symbols/cm +++ b/xorg-server/xkeyboard-config/symbols/cm @@ -42,7 +42,6 @@ xkb_symbols "basic" { name[Group1]="English (Cameroon)"; - // Alphanumeric section key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at ] }; @@ -93,7 +92,6 @@ xkb_symbols "basic" { key <AB10> { [ slash, U003F ] }; key <BKSL> { [ backslash, bar ] }; - // End alphanumeric section }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/de b/xorg-server/xkeyboard-config/symbols/de index adc60ed36..01bde5d20 100644 --- a/xorg-server/xkeyboard-config/symbols/de +++ b/xorg-server/xkeyboard-config/symbols/de @@ -485,7 +485,6 @@ xkb_symbols "mac" { include "de" name[Group1]= "German (Macintosh)"; - // Alphanumeric section key <AE01> { [ 1, exclam, exclamdown, at ] }; key <AE05> { [ 5, percent, bracketleft ] }; key <AE06> { [ 6, ampersand, bracketright ] }; @@ -512,9 +511,9 @@ xkb_symbols "mac_nodeadkeys" { // modify the standard German mac layout to not have any dead keys include "de(mac)" name[Group1]= "German (Macintosh, eliminate dead keys)"; - key <AE04> { [ 4, dollar, onequarter, currency ] }; key <TLDE> { [ asciicircum, degree, notsign ] }; + key <AE04> { [ 4, dollar, onequarter, currency ] }; key <AE12> { [ acute, grave, cedilla ] }; key <AD11> { [ udiaeresis, Udiaeresis, diaeresis ] }; key <AD12> { [ plus, asterisk, asciitilde, macron ] }; @@ -598,7 +597,7 @@ xkb_symbols "ru" { name[Group1]= "Russian (Germany, phonetic)"; -key.type[group1]="FOUR_LEVEL_ALPHABETIC"; + key.type[group1]="FOUR_LEVEL_ALPHABETIC"; key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; @@ -725,8 +724,6 @@ xkb_symbols "hu" { key <AE12> { [ acute, grave, oacute, Oacute ] }; key <BKSL> { [numbersign, apostrophe, grave, grave ] }; key <TLDE> { [asciicircum, degree, notsign, notsign ] }; - - }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/es b/xorg-server/xkeyboard-config/symbols/es index ea4a28b1f..4196762a6 100644 --- a/xorg-server/xkeyboard-config/symbols/es +++ b/xorg-server/xkeyboard-config/symbols/es @@ -1,6 +1,4 @@ -// based on a keyboard -// Modified for a real Spanish Keyboard by Jon Tombs -// +// Modified for a real Spanish keyboard by Jon Tombs. partial default alphanumeric_keys xkb_symbols "basic" { @@ -66,7 +64,6 @@ xkb_symbols "dvorak" { name[Group1]="Spanish (Dvorak)"; - // Alphanumeric section key <TLDE> {[ masculine, ordfeminine, backslash, degree ]}; key <AE01> {[ 1, exclam, bar, onesuperior ]}; key <AE02> {[ 2, quotedbl, at, twosuperior ]}; @@ -146,13 +143,8 @@ xkb_symbols "ast" { // Copied from macintosh_vndr/es partial alphanumeric_keys xkb_symbols "mac" { - - // Describes the differences between a very simple mac_US - // keyboard and a very simple Spanish keybaord - include "es" name[Group1]= "Spanish (Macintosh)"; - }; partial alphanumeric_keys @@ -230,7 +222,6 @@ xkb_symbols "olpcm" { key <AA06> { [ bracketleft, braceleft, ccedilla, Ccedilla ] }; key <AA07> { [ bracketright, braceright ] }; - include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/fr b/xorg-server/xkeyboard-config/symbols/fr index 1bf007e77..71b20b44b 100644 --- a/xorg-server/xkeyboard-config/symbols/fr +++ b/xorg-server/xkeyboard-config/symbols/fr @@ -1,5 +1,3 @@ -// based on a keyboard map from an 'xkb/symbols/fr' file - partial default alphanumeric_keys xkb_symbols "basic" { @@ -109,13 +107,13 @@ xkb_symbols "nodeadkeys" { // © 2003-2006 Nicolas Mailhot <nicolas.mailhot @ laposte.net> // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ -// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ A Æ │ Z  │ E ¢ │ R Ê │ T Þ │ Y Ÿ │ U Û │ I Î │ O Œ │ P Ô │ ¨ ˚ │ £ Ø ┃Entrée ┃ // ┃Tab ↹ ┃ a æ │ z â │ e € │ r ê │ t þ │ y ÿ │ u û │ i î │ o œ │ p ô │ ^ ~ │ $ ø ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ -// ┃ ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃ ┃ +// ┃ ┃ Q Ä │ S „ │ D Ë │ F ‚ │ G ¥ │ H Ð │ J Ü │ K Ï │ L Ŀ │ M Ö │ % Ù │ µ ̄ ┃ ┃ // ┃Maj ⇬ ┃ q ä │ s ß │ d ë │ f ‘ │ g ’ │ h ð │ j ü │ k ï │ l ŀ │ m ö │ ù ' │ * ` ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N → │ ? … │ . . │ / ∕ │ § − ┃ ┃ @@ -136,7 +134,7 @@ xkb_symbols "oss" { name[Group1]="French (alternative)"; // First row - key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸ + key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸ key <AE01> { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ ̨ key <AE02> { [ eacute, 2, asciitilde, Eacute ] }; // é 2 ~ É key <AE03> { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 # ˘ @@ -147,7 +145,7 @@ xkb_symbols "oss" { key <AE08> { [ underscore, 8, backslash, trademark ] }; // _ 8 \ ™ key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] }; // ç 9 ^ Ç key <AE10> { [ agrave, 0, at, Agrave ] }; // à 0 @ À - key <AE11> { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠ + key <AE11> { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠ key <AE12> { [ equal, plus, braceright, plusminus ] }; // = + } ± // Second row @@ -166,7 +164,7 @@ xkb_symbols "oss" { // Third row key <AC01> { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q ä Ä - key <AC02> { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „ + key <AC02> { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „ key <AC03> { [ d, D, ediaeresis, Ediaeresis ] }; // d D ë Ë key <AC04> { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F ‘ ‚ key <AC05> { [ g, G, rightsinglequotemark, yen ] }; // g G ’ ¥ @@ -207,16 +205,16 @@ xkb_symbols "oss_latin9" { key <AE03> { [ quotedbl, 3, numbersign, dead_tilde ] }; // " 3 # ~ key <AE04> { [ apostrophe, 4, braceleft, underscore ] }; // ' 4 { _ key <AE05> { [ parenleft, 5, bracketleft, minus ] }; // ( 5 [ - - key <AE06> { [ minus, 6, bar, minus ] }; // - 6 | - - key <AE08> { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \ + key <AE06> { [ minus, 6, bar, minus ] }; // - 6 | - + key <AE08> { [ underscore, 8, backslash, backslash ] }; // _ 8 \ \ key <AE11> { [ parenright, degree, bracketright, equal ] }; // ) ° ] = // Third row - key <AC02> { [ s, S, ssharp, guillemotleft ] }; // s S ß « + key <AC02> { [ s, S, ssharp, guillemotleft ] }; // s S ß « key <AC04> { [ f, F, apostrophe, apostrophe ] }; // f F ' ' key <AC05> { [ g, G, apostrophe, yen ] }; // g G ' ¥ - key <AC09> { [ l, L, periodcentered, periodcentered ] }; // l L · · - key <BKSL> { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * µ ` ^ + key <AC09> { [ l, L, periodcentered, periodcentered ] }; // l L · · + key <BKSL> { [ asterisk, mu, dead_grave, dead_circumflex ] }; // * µ ` ^ // Fourth row key <LSGT> { [ less, greater, less, greater ] }; // < > < > @@ -238,15 +236,12 @@ xkb_symbols "oss_Sundeadkeys" { include "fr(oss)" - // First row - key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ¹ ² ³ ¸ + key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ¹ ² ³ ¸ - // Second row - key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^ ̈ ̃ ˚ + key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, dead_abovering ] }; // ^ ̈ ̃ ˚ - //Third row - key <AC11> { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ' Ù - key <BKSL> { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ̄ + key <AC11> { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ' Ù + key <BKSL> { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ̄ }; partial alphanumeric_keys @@ -266,12 +261,11 @@ xkb_symbols "oss_nodeadkeys" { name[Group1]="French (alternative, eliminate dead keys)"; - key <TLDE> { [ twosuperior, threesuperior, onesuperior, cedilla ] }; // ² ³ ¹ ¸ + key <TLDE> { [ twosuperior, threesuperior, onesuperior, cedilla ] }; // ² ³ ¹ ¸ key <AE01> { [ ampersand, 1, caron, ogonek ] }; // & 1 ˇ ̨ key <AE03> { [ quotedbl, 3, numbersign, breve ] }; // " 3 # ˘ - // Second row - key <AD11> { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^ ̈ ̃ Å + key <AD11> { [ asciicircum, diaeresis, asciitilde, Aring ] }; // ^ ̈ ̃ Å key <AC11> { [ ugrave, percent, acute, Ugrave ] }; // ù % ' Ù key <BKSL> { [ asterisk, mu, grave, macron ] }; // * µ ` ̄ }; @@ -286,16 +280,16 @@ xkb_symbols "oss_nodeadkeys" { // This layout has long been distributed and refined outside official channels. // To this day it remains more feature-rich and popular than the 'fr' layout. // -// This file is derived from an original version by Guylhem Aznar. The -// original version is always available from: +// This layout is derived from an original version by Guylhem Aznar. +// The original version is always available from: // http://en.tldp.org/HOWTO/Francophones-HOWTO.html // and is distributed under a GPL license. // // The author has given permission for this derived version to be distributed // under the standard XFree86 license. He would like all changes to this -// version be send to him at <clavier @ externe.net> so he can sync the -// identically named linux console map (kbd, linux-console) and this -// fileout-of-tree GPL version. +// version to be sent to him at <clavier @ externe.net>, so he can sync +// the identically named linux console map (kbd, linux-console) and his +// out-of-tree GPL version. // // Now follows the keyboard design description in French. // (If you can't read it you probably have no business changing this file anyway:) @@ -331,15 +325,16 @@ xkb_symbols "oss_nodeadkeys" { // // (^) : accent circonflexe, // Shift+(^) : tréma, -// Shift+AltGr (^) : tilde, -// AltGr (1) : accent aigu, -// AltGr (7) : accent grave +// Shift+AltGr+(^) : tilde, +// AltGr+(1) : accent aigu, +// AltGr+(7) : accent grave // // Pour s'en servir, procéder comme avec l'accent circonflexe & le tréma // sur les vielles machines à écrire : // -// AltGr (1) puis e : é -// Shift+AltGr (1) puis e : É ... +// AltGr+(1) puis e : é +// AltGr+(1) puis E : É +// partial alphanumeric_keys xkb_symbols "latin9" { @@ -418,7 +413,6 @@ xkb_symbols "latin9_Sundeadkeys" { key <AE01> { [ ampersand, 1, dead_acute, periodcentered ] }; key <AE07> { [ egrave, 7, dead_grave, Egrave ] }; key <AD11> { [ dead_circumflex, dead_diaeresis, dead_tilde, apostrophe ] }; - }; partial alphanumeric_keys @@ -451,22 +445,22 @@ xkb_symbols "latin9_nodeadkeys" { // by Frédéric Boiteux <fboiteux at free dot fr> // // Bépo layout (1.0rc2 version) for a pc105 keyboard (french) : -// ┌────┐ -// │ S A│ S = Shift, A = AltGr + Shift -// │ s a│ s = normal, a = AltGr -// └────┘ +// ┌─────┐ +// │ S A │ S = Shift, A = AltGr + Shift +// │ s a │ s = normal, a = AltGr +// └─────┘ // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6 │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃ // │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ ! │ V │ D Ð │ L │ J IJ │ Z Ə │ W ┃Entrée ┃ -// ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃ +// ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ -// ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃ -// ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃ +// ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃ +// ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ -// ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃ +// ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃ // ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧ ┃ // ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛ // ┃ ┃ ┃ ┃ Espace inséc. Espace inséc. fin ┃ ┃ ┃ ┃ @@ -692,10 +686,10 @@ xkb_symbols "dvorak" { // Copyright © 2009 Dominique Pellé <dominique.pelle@gmail.com> // Version: 0.1 // -// ┌────┐ -// │ S A│ S = Reol = Shift, A = ArErl + Pennlizherenn = AltGr + Shift -// │ s a│ s = normal, a = AltGr -// └────┘ +// ┌─────┐ +// │ S A │ S = Reol = Shift, A = ArErl + Pennlizherenn = AltGr + Shift +// │ s a │ s = normal, a = ArErl = AltGr +// └─────┘ // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ $ Γ │ 1 Δ │ 2 Θ │ 3 Λ │ 4 Ξ │ 5 Π │ 6 Σ │ 7 Φ │ 8 Ψ │ 9 Ç │ 0 Ω │ ° ß │ + ¬ ┃ ⌫ Souzañ┃ @@ -789,20 +783,20 @@ xkb_symbols "bre" { // Occitan layout // Author : 2009 Thomas Metz <tmetz @ free.fr> -// Derivated from the layout defined at http://www.panoccitan.org +// Derived from the layout defined at http://www.panoccitan.org // Version: 0.1 -// From OSS french keyboard : +// Differences from OSS French keyboard : // - add á, í, ò, ó et ú, Á, Í, Ò, Ó, Ú, ñ, Ñ // - change position of æ, ü, î, û, œ, ô, ö, ï, â, ë -// +// // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ -// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ +// │ ³ ¸ │ 1 ̨ │ 2 É │ 3 ˘ │ 4 — │ 5 – │ 6 ‑ │ 7 È │ 8 ™ │ 9 Ç │ 0 À │ ° ≠ │ + ± ┃ ⌫ Retour┃ // │ ² ¹ │ & ˇ │ é ~ │ " # │ ' { │ ( [ │ - | │ è ` │ _ \ │ ç ^ │ à @ │ ) ] │ = } ┃ arrière┃ // ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫ // ┃ ┃ A Á │ Z Æ │ E ¢ │ R Ê │ T Ë │ Y Û │ U Ú │ I Í │ O Ó │ P Ò │ ¨ Œ │ £ Ø ┃Entrée ┃ // ┃Tab ↹ ┃ a á │ z æ │ e € │ r ê │ t ë │ y û │ u ú │ i í │ o ó │ p ò │ ^ œ │ $ ø ┃ ⏎ ┃ // ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃ -// ┃ ┃ Q Ä │ S „ │ D  │ F ‚ │ G ¥ │ H Ü │ J Î │ K Ï │ L Ô │ M Ö │ % Ù │ µ ̄ ┃ ┃ +// ┃ ┃ Q Ä │ S „ │ D  │ F ‚ │ G ¥ │ H Ü │ J Î │ K Ï │ L Ô │ M Ö │ % Ù │ µ ̄ ┃ ┃ // ┃Maj ⇬ ┃ q ä │ s ß │ d â │ f ‘ │ g ’ │ h ü │ j î │ k ï │ l ô │ m ö │ ù ' │ * ` ┃ ┃ // ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫ // ┃ ┃ > ≥ │ W “ │ X ” │ C ® │ V ← │ B ↑ │ N Ñ │ ? … │ . . │ / ∕ │ § − ┃ ┃ @@ -818,26 +812,8 @@ xkb_symbols "oci" { name[Group1]= "Occitan"; - // First row - key <TLDE> { [ twosuperior, threesuperior, onesuperior, dead_cedilla ] }; // ² ³ ¹ ¸ - key <AE01> { [ ampersand, 1, dead_caron, dead_ogonek ] }; // & 1 ˇ ̨ - key <AE02> { [ eacute, 2, asciitilde, Eacute ] }; // é 2 ~ É - key <AE03> { [ quotedbl, 3, numbersign, dead_breve ] }; // " 3 # ˘ - key <AE04> { [ apostrophe, 4, braceleft, 0x1002014 ] }; // ' 4 { — (tiret cadratin) - key <AE05> { [ parenleft, 5, bracketleft, 0x1002013 ] }; // ( 5 [ – (tiret demi-cadratin) - key <AE06> { [ minus, 6, bar, 0x1002011 ] }; // - 6 | ‑ (tiret insécable) - key <AE07> { [ egrave, 7, grave, Egrave ] }; // è 7 ` È - key <AE08> { [ underscore, 8, backslash, trademark ] }; // _ 8 \ ™ - key <AE09> { [ ccedilla, 9, asciicircum, Ccedilla ] }; // ç 9 ^ Ç - key <AE10> { [ agrave, 0, at, Agrave ] }; // à 0 @ À - key <AE11> { [ parenright, degree, bracketright, notequal ] }; // ) ° ] ≠ - key <AE12> { [ equal, plus, braceright, plusminus ] }; // = + } ± - - // Second row key <AD01> { [ a, A, aacute, Aacute ] }; // a A á Á key <AD02> { [ z, Z, ae, AE ] }; // z Z æ Æ - key <AD03> { [ e, E, EuroSign, cent ] }; // e E € ¢ - key <AD04> { [ r, R, ecircumflex, Ecircumflex ] }; // r R ê Ê key <AD05> { [ t, T, ediaeresis, Ediaeresis ] }; // t T ë Ë key <AD06> { [ y, Y, ucircumflex, Ucircumflex ] }; // y Y û Û key <AD07> { [ u, U, uacute, Uacute ] }; // u U ú Ú @@ -845,41 +821,22 @@ xkb_symbols "oci" { key <AD09> { [ o, O, oacute, Oacute ] }; // o O ó Ó key <AD10> { [ p, P, ograve, Ograve ] }; // p P ò Ò key <AD11> { [ dead_circumflex, dead_diaeresis, oe, OE ] }; // ^ ̈ ̃ œ Œ - key <AD12> { [ dollar, sterling, oslash, Ooblique ] }; // $ £ ø Ø - // Third row - key <AC01> { [ q, Q, adiaeresis, Adiaeresis ] }; // q Q ä Ä - key <AC02> { [ s, S, ssharp, doublelowquotemark ] }; // s S ß „ - key <AC03> { [ d, D, acircumflex, Acircumflex ] }; // d D â  - key <AC04> { [ f, F, leftsinglequotemark, singlelowquotemark ] }; // f F ‘ ‚ - key <AC05> { [ g, G, rightsinglequotemark, yen ] }; // g G ’ ¥ + key <AC03> { [ d, D, acircumflex, Acircumflex ] }; // d D â  key <AC06> { [ h, H, udiaeresis, Udiaeresis ] }; // h H ü Ü - key <AC07> { [ j, J, icircumflex, Icircumflex] }; // j J î Î - key <AC08> { [ k, K, idiaeresis, Idiaeresis] }; // k K ï Ï + key <AC07> { [ j, J, icircumflex, Icircumflex ] }; // j J î Î + key <AC08> { [ k, K, idiaeresis, Idiaeresis ] }; // k K ï Ï key <AC09> { [ l, L, ocircumflex, Ocircumflex ] }; // l L ô Ô - key <AC10> { [ m, M, odiaeresis, Odiaeresis ] }; // m M ö Ö - key <AC11> { [ ugrave, percent, dead_acute, Ugrave ] }; // ù % ' Ù - key <BKSL> { [ asterisk, mu, dead_grave, dead_macron ] }; // * µ ` ̄ - // Fourth row - key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; // < > ≤ ≥ - key <AB01> { [ w, W, guillemotleft, leftdoublequotemark ] }; // w W « “ - key <AB02> { [ x, X, guillemotright, rightdoublequotemark ] }; // x X » ” - key <AB03> { [ c, C, copyright, registered ] }; // c C © ® - key <AB04> { [ v, V, rightarrow, leftarrow ] }; // v V → ← - key <AB05> { [ b, B, downarrow, uparrow ] }; // b B ↓ ↑ - key <AB06> { [ n, N, ntilde, Ntilde ] }; // n N ñ Ñ - key <AB07> { [ comma, question, questiondown, 0x1002026 ] }; // , ? ¿ … - key <AB08> { [ semicolon, period, multiply, 0x10022C5 ] }; // ; . × ⋅ - key <AB09> { [ colon, slash, division, 0x1002215 ] }; // : / ÷ ∕ - key <AB10> { [ exclam, section, exclamdown, 0x1002212 ] }; // ! § ¡ − + key <AB04> { [ v, V, rightarrow, leftarrow ] }; // v V → ← + key <AB06> { [ n, N, ntilde, Ntilde ] }; // n N ñ Ñ }; // Marc.Shapiro@inria.fr 19-sep-1998 // modifications : Etienne Herlent <eherlent@linux-france.org> june 2000 // adapted to the new input layer : // Martin Costabel <costabel@wanadoo.fr> 3-jan-2001 -// adapted for Latin9 alphabet (ISO-8859-15): +// adapted for Latin9 alphabet (ISO-8859-15): // Etienne Herlent <eherlent@linux-france.org> march 2005 // This map is an almost-complete mapping of the standard French @@ -903,8 +860,7 @@ xkb_symbols "mac" { name[Group1]= "French (Macintosh)"; - // Alphanumeric section - key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] }; // MISSING: Ydiaeresis; eherlent : ok in Latin9 + key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] }; // MISSING: Ydiaeresis; eherlent : ok in Latin9 key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple key <AE02> { [ eacute, 2, ediaeresis, Eacute ] }; key <AE03> { [ quotedbl, 3, VoidSymbol, VoidSymbol ] }; // CHECK all quotemarks @@ -920,19 +876,19 @@ xkb_symbols "mac" { key <AE12> { [ minus, underscore, emdash, endash ] }; // CHECK dashes key <AD01> { [ a, A, ae, AE ] }; - key <AD02> { [ z, Z, Acircumflex, Aring ] }; + key <AD02> { [ z, Z, Acircumflex, Aring ] }; key <AD03> { [ e, E, ecircumflex, Ecircumflex ] }; key <AD04> { [ r, R, registered, currency ] }; key <AD05> { [ t, T, VoidSymbol, VoidSymbol ] }; key <AD06> { [ y, Y, Uacute, Ydiaeresis ] }; // MISSING: Ydiaeresis; eherlent : ok in Latin9 key <AD07> { [ u, U, VoidSymbol, ordfeminine ] }; // MISSING: ordmasculine? key <AD08> { [ i, I, icircumflex, idiaeresis ] }; - key <AD09> { [ o, O, oe, OE ] }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9 + key <AD09> { [ o, O, oe, OE ] }; // MISSING: oe, OE lacking in Latin1; eherlent ok in Latin9 key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] }; key <AD11> { [dead_circumflex,dead_diaeresis, ocircumflex, Ocircumflex ] }; - key <AD12> { [ dollar, asterisk, EuroSign, yen ] }; // eherlent : EuroSign in Latin9 + key <AD12> { [ dollar, asterisk, EuroSign, yen ] }; // eherlent : EuroSign in Latin9 - key <AC01> { [ q, Q, acircumflex, Agrave ] }; + key <AC01> { [ q, Q, acircumflex, Agrave ] }; key <AC02> { [ s, S, Ograve, VoidSymbol ] }; key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] }; key <AC04> { [ f, F, VoidSymbol, periodcentered ] }; // MISSING: oblong script f?? @@ -946,7 +902,7 @@ xkb_symbols "mac" { key <BKSL> { [ dead_grave, sterling, at, numbersign ] }; key <LSGT> { [ less, greater, VoidSymbol, VoidSymbol ] }; - key <AB01> { [ w, W, VoidSymbol, VoidSymbol ] }; // MISSING: half-guillemot (single angle bracket) + key <AB01> { [ w, W, VoidSymbol, VoidSymbol ] }; // MISSING: half-guillemot (single angle bracket) key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK similarequal; MISSING: extra-slanted slash key <AB03> { [ c, C, copyright, cent ] }; key <AB04> { [ v, V, diamond, leftradical ] }; // CHECK diamond, leftradical @@ -958,7 +914,6 @@ xkb_symbols "mac" { key <AB10> { [ equal, plus, VoidSymbol, plusminus ] }; key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; - // End alphanumeric section key <KPDL> { [ comma,KP_Decimal ] }; diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us index b856393fd..30661dbb2 100644 --- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us +++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/us @@ -133,7 +133,6 @@ xkb_symbols { key <KP00> { [ KP_0 ] }; // End "Keypad" section - // begin modifier mappings modifier_map Shift { Shift_R }; modifier_map Mod1 { Meta_L, Meta_R }; modifier_map Mod2 { Mode_switch }; diff --git a/xorg-server/xkeyboard-config/symbols/gb b/xorg-server/xkeyboard-config/symbols/gb index 10372afcd..949b2491f 100644 --- a/xorg-server/xkeyboard-config/symbols/gb +++ b/xorg-server/xkeyboard-config/symbols/gb @@ -74,7 +74,6 @@ xkb_symbols "extd" { name[Group1]="English (UK, extended WinKeys)"; - // Alphanumeric section key <TLDE> { [ dead_grave, notsign, brokenbar, NoSymbol ] }; key <AE02> { [ 2, quotedbl, dead_diaeresis, onehalf ] }; @@ -96,7 +95,6 @@ xkb_symbols "extd" { key <BKSL> { [ numbersign, asciitilde, dead_tilde, NoSymbol ] }; key <LSGT> { [ backslash, bar, NoSymbol, NoSymbol ] }; - // End alphanumeric section include "level3(ralt_switch)" }; @@ -172,8 +170,6 @@ xkb_symbols "mac" { key <TLDE> { [ section, plusminus ] }; key <LSGT> { [ grave, asciitilde ] }; - // End alphanumeric section - include "level3(ralt_switch)" include "level3(enter_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/hp_vndr/us b/xorg-server/xkeyboard-config/symbols/hp_vndr/us index aedda92d2..8bbe2e606 100644 --- a/xorg-server/xkeyboard-config/symbols/hp_vndr/us +++ b/xorg-server/xkeyboard-config/symbols/hp_vndr/us @@ -69,8 +69,9 @@ xkb_symbols "hil" { key <DOWN> { [ Down ] }; key <UP> { [ Up ] }; key <RGHT> { [ Right ]}; + // End "Editing" section - // End "Editing" section, begin "Keypad" + // Begin "Keypad" section key <KPMU> { [ KP_Multiply ]}; key <KPDV> { [ KP_Divide ]}; key <KPAD> { [ KP_Add ]}; @@ -95,8 +96,6 @@ xkb_symbols "hil" { key <KPDL> { [ KP_Decimal ] }; // End "Keypad" section - - // begin modifier mappings modifier_map Shift { Shift_R }; modifier_map Mod1 { Meta_L, Meta_R }; modifier_map Mod2 { Alt_L }; diff --git a/xorg-server/xkeyboard-config/symbols/in b/xorg-server/xkeyboard-config/symbols/in index 5336232d1..9f0594928 100644 --- a/xorg-server/xkeyboard-config/symbols/in +++ b/xorg-server/xkeyboard-config/symbols/in @@ -163,7 +163,6 @@ xkb_symbols "bolnagri" { 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 }; @@ -911,7 +910,6 @@ xkb_symbols "mal_lalitha" { 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 }; @@ -1518,9 +1516,8 @@ xkb_symbols "jhelum" { 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 ] }; + key <AB10> { [ slash, question ] }; -// begin modifier mappings // modifier_map Shift { Shift_L }; // modifier_map Lock { Caps_Lock }; // modifier_map Control{ Control_L }; diff --git a/xorg-server/xkeyboard-config/symbols/it b/xorg-server/xkeyboard-config/symbols/it index f0336e58b..d2a5461b5 100644 --- a/xorg-server/xkeyboard-config/symbols/it +++ b/xorg-server/xkeyboard-config/symbols/it @@ -67,7 +67,6 @@ xkb_symbols "mac" { name[Group1]= "Italian (Macintosh)"; - // Alphanumeric section key <LSGT> { [ less, greater ] }; key <TLDE> { [ at, numbersign, periodcentered ] }; key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] }; @@ -120,8 +119,6 @@ xkb_symbols "mac" { key <AB09> { [ colon, slash, bar, backslash ] }; key <AB10> { [ ograve, exclam, exclamdown ] }; - // End alphanumeric section - include "kpdl(dot)" include "level3(ralt_switch)" }; @@ -132,8 +129,8 @@ partial alphanumeric_keys xkb_symbols "geo" { include "it" include "ge(basic)" - name[Group1]= "Georgian (Italy)"; + key <TLDE> { [ backslash, bar, notsign, brokenbar ] }; key <AE01> { [ 1, exclam, onesuperior ] }; key <AE02> { [ 2, quotedbl, twosuperior, dead_doubleacute ] }; @@ -145,10 +142,10 @@ xkb_symbols "geo" { key <AE08> { [ 8, parenleft, bracketleft ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0, equal, braceright, dead_ogonek ] }; - key <AE11> { [apostrophe, question, grave, questiondown ] }; + key <AE11> { [ apostrophe, question, grave, questiondown ] }; key <AE12> { [ igrave, asciicircum, asciitilde, dead_circumflex ] }; - key <AD03> { [0x010010d4, E, EuroSign ] }; + key <AD03> { [ 0x010010d4, E, EuroSign ] }; key <AD11> { [ egrave, eacute, bracketleft, braceleft ] }; key <AD12> { [ plus, asterisk, bracketright, braceright ] }; @@ -179,8 +176,6 @@ xkb_symbols "us" { name[Group1]= "Italian (US keyboard with Italian letters)"; - // Alphanumeric section - key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] }; key <AE01> { [ 1, exclam, onesuperior ] }; key <AE02> { [ 2, at, twosuperior ] }; @@ -295,7 +290,6 @@ xkb_symbols "ibm" { include "level3(ralt_switch)" include "kpdl(comma)" - }; diff --git a/xorg-server/xkeyboard-config/symbols/jp b/xorg-server/xkeyboard-config/symbols/jp index 72985fd3e..dfb56b7c2 100644 --- a/xorg-server/xkeyboard-config/symbols/jp +++ b/xorg-server/xkeyboard-config/symbols/jp @@ -1,22 +1,19 @@ -// based on: -// symbols for a Japanese 106 keyboard(by tsuka@kawalab.dnj.ynu.ac.jp) +// Symbols for Japanese 106-keys keyboards (by tsuka@kawalab.dnj.ynu.ac.jp). -// jp106 keyboard map partial default alphanumeric_keys xkb_symbols "106" { + include "jp(common)" name[Group1]= "Japanese"; key <AE10> { [ 0, asciitilde ] }; - key <AE13> { [ backslash, bar ] }; + key <AE13> { [ backslash, bar ] }; }; -// common latin part of jp keyboard map partial hidden alphanumeric_keys xkb_symbols "common" { - // "Common" keys for jp 106/109A layout + // "Common" keys for jp 106/109A layouts. - // Alphanumeric section key <HZTG> { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Zenkaku_Hankaku, Kanji ] @@ -81,29 +78,28 @@ xkb_symbols "common" { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Henkan, Mode_switch ] }; + key <HKTG> { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Hiragana_Katakana, Romaji ] }; key <EISU> { - type[Group1]="PC_ALT_LEVEL2", - symbols[Group1]= [ Eisu_toggle ] + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1]= [ Eisu_toggle ] }; key <KANA> { - type[Group1]="PC_ALT_LEVEL2", - symbols[Group1]= [ Hiragana_Katakana ] + type[Group1]="PC_ALT_LEVEL2", + symbols[Group1]= [ Hiragana_Katakana ] }; - key <PRSC> { - type[Group1]= "PC_ALT_LEVEL2", - symbols[Group1]= [ Print, Execute ] + type[Group1]= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Execute ] }; }; -// OADG109A map partial alphanumeric_keys xkb_symbols "OADG109A" { @@ -111,7 +107,7 @@ xkb_symbols "OADG109A" { name[Group1]= "Japanese (OADG 109A)"; key <AE10> { [ 0 ] }; - key <AE13> { [ yen, bar ] }; + key <AE13> { [ yen, bar ] }; }; // 86 keys with kana map @@ -126,8 +122,8 @@ xkb_symbols "kana86" { include "jp(OADG109A)" name[Group1]= "Japanese (Kana 86)"; - key <ESC> { [ Escape ] }; - key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; + key <ESC> { [ Escape ] }; + key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; key <BKSP> { [ BackSpace ] }; key <TAB> { [ Tab, ISO_Left_Tab ] }; key <RTRN> { [ Return ] }; @@ -137,9 +133,9 @@ xkb_symbols "kana86" { key <LALT> { [ Alt_L ] }; key <SPCE> { [ space ] }; key <RALT> { [ Alt_R ] }; -// for compatability with other keyboards connected at the same time - key <RWIN> { [ Super_R ] }; - key <RCTL> { [ Control_R ] }; + // For compatibility with other keyboards connected at the same time: + key <RWIN> { [ Super_R ] }; + key <RCTL> { [ Control_R ] }; }; partial alphanumeric_keys @@ -147,11 +143,11 @@ xkb_symbols "kana" { name[Group1]= "Japanese (Kana)"; - // Alphanumeric section key <HZTG> { type[Group1]="PC_ALT_LEVEL2", symbols[Group1]= [ Zenkaku_Hankaku, Kanji ] }; + key <AE01> { [ kana_NU ] }; key <AE02> { [ kana_FU ] }; key <AE03> { [ kana_A, kana_a ] }; @@ -176,7 +172,7 @@ xkb_symbols "kana" { key <AD08> { [ kana_NI ] }; key <AD09> { [ kana_RA ] }; key <AD10> { [ kana_SE ] }; - key <AD11> { [ voicedsound ] }; + key <AD11> { [ voicedsound ] }; key <AD12> { [ semivoicedsound, kana_openingbracket ] }; key <CAPS> { [ Eisu_toggle, Caps_Lock ] }; @@ -217,21 +213,19 @@ xkb_symbols "kana" { symbols[Group1]= [ Hiragana_Katakana, Romaji ] }; - // End alphanumeric section - key <PRSC> { - type[Group1]= "PC_ALT_LEVEL2", - symbols[Group1]= [ Print, Execute ] + type[Group1]= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Execute ] }; }; partial alphanumeric_keys xkb_symbols "nicola_f_bs" { key <BKSP> { - type="", - symbols[Group1]= [ bracketright, braceright ] + type="", + symbols[Group1]= [ bracketright, braceright ] }; - key <AE10> { [ 0,underscore ] }; + key <AE10> { [ 0, underscore ] }; key <AD11> { [ colon, asterisk ] }; key <AC11> { [ BackSpace, BackSpace ] }; key <AC12> { [ Escape ] }; @@ -241,7 +235,7 @@ xkb_symbols "nicola_f_bs" { // Copied from macintosh_vndr/jp partial alphanumeric_keys xkb_symbols "mac" { - name[Group1] = "Japanese (Macintosh)"; + name[Group1]= "Japanese (Macintosh)"; include "jp(kana)" replace key <CAPS> { [ Caps_Lock ] }; @@ -254,13 +248,13 @@ xkb_symbols "hztg_escape" { partial alphanumeric_keys xkb_symbols "dvorak" { - name[Group1] = "Japanese (Dvorak)"; + name[Group1]= "Japanese (Dvorak)"; include "jp(OADG109A)" key <AE11> { [ at, grave ] }; key <AD01> { [ colon, asterisk ] }; - key <AD02> { [ comma, less ] }; + key <AD02> { [ comma, less ] }; key <AD03> { [ period, greater ] }; key <AD04> { [ p, P ] }; key <AD05> { [ y, Y ] }; diff --git a/xorg-server/xkeyboard-config/symbols/la b/xorg-server/xkeyboard-config/symbols/la index dc101bc22..b302f5e71 100644 --- a/xorg-server/xkeyboard-config/symbols/la +++ b/xorg-server/xkeyboard-config/symbols/la @@ -3,13 +3,11 @@ partial default alphanumeric_keys xkb_symbols "basic" { - // Describes the differences between a very simple US/ASCII - // keyboard and a Lao keyboard - // This keymap uses the Lao keyboard standard [kind of] widely used inLaos + // This keymap describes the Lao keyboard standard, + // which is [kind of] widely used in Laos. name[Group1]= "Lao"; - // Alphanumeric section key <TLDE> { [ 0x100200D ]}; key <AE01> { [ 0x1000ea2, 0x1000ed1 ]}; key <AE01> { [ 0x1000ea2, 0x1000ed1 ]}; @@ -37,7 +35,7 @@ xkb_symbols "basic" { key <AD10> { [ 0x1000e8d, 0x1000ebd ]}; key <AD11> { [ 0x1000e9a, minus ]}; key <AD12> { [ 0x1000ea5, braceright ]}; - key <BKSL> { [ 0x1000edc, 0x1000edd ]}; + key <BKSL> { [ 0x1000edc, 0x1000edd ]}; key <AC01> { [ 0x1000eb1 ]}; key <AC02> { [ 0x1000eab, semicolon ]}; @@ -61,27 +59,23 @@ xkb_symbols "basic" { key <AB08> { [ 0x1000ea1, grave ]}; key <AB09> { [ 0x1000ec3, dollar ]}; key <AB10> { [ 0x1000e9d, parenright ]}; - }; + partial xkb_symbols "stea" { - // Describes the differences between a very simple US/ASCII - // keyboard and a Lao keyboard - // This keymap uses the proposed Lao keyboard standard by the - // PAN Localization Project + // This keymap describes the proposed Lao keyboard standard by + // the PAN Localization Project. // Science Technology and Environment Agency of Lao PDR // National University Computer and Emergency Science of Pakistan // International Development Research Center - // Caveat: assigning multiple codepoints to a single key doesn't - // work in XKB. Therefor the combining codepoint assignments + // Caveat: assigning multiple codepoints to a single key doesn't + // work in XKB. Therefore the combining codepoint assignments // have been omitted. - name[Group1]= "Lao (STEA proposed standard layout)"; - // Alphanumeric section key <TLDE> { [ quotedbl, apostrophe ]}; key <AE01> { [ 0x1000ea2, 1, 0x1000ed1 ]}; key <AE02> { [ 0x1000e9f, 2, 0x1000ed2 ]}; @@ -94,23 +88,23 @@ xkb_symbols "stea" { key <AE09> { [ 0x1000e88, 7, 0x1000ed9 ]}; key <AE10> { [ 0x1000e82, 8, 0x1000ed0 ]}; key <AE11> { [ 0x1000e8a, 9 ]}; - key <AE12> { [ 0x1000ecd ]}; + key <AE12> { [ 0x1000ecd ]}; - key <AD01> { [ 0x1000ebb ]}; + key <AD01> { [ 0x1000ebb ]}; key <AD02> { [ 0x1000ec4, 0 ]}; key <AD03> { [ 0x1000eb3, asterisk ]}; key <AD04> { [ 0x1000e9e, underscore ]}; key <AD05> { [ 0x1000eb0, plus ]}; - key <AD06> { [ 0x1000eb4 ]}; - key <AD07> { [ 0x1000eb5 ]}; + key <AD06> { [ 0x1000eb4 ]}; + key <AD07> { [ 0x1000eb5 ]}; key <AD08> { [ 0x1000eae, 0x1000ea3 ]}; key <AD09> { [ 0x1000e99, 0x1000edc ]}; - key <AD10> { [ 0x1000e8d, 0x1000ebd ]}; - key <AD11> { [ 0x1000e9a, minus ]}; - key <AD12> { [ 0x1000ea5 ]}; + key <AD10> { [ 0x1000e8d, 0x1000ebd ]}; + key <AD11> { [ 0x1000e9a, minus ]}; + key <AD12> { [ 0x1000ea5 ]}; key <BKSL> { [ slash, backslash ]}; - key <AC01> { [ 0x1000eb1 ]}; + key <AC01> { [ 0x1000eb1 ]}; key <AC02> { [ 0x1000eab, semicolon ]}; key <AC03> { [ 0x1000e81, period ]}; key <AC04> { [ 0x1000e94, comma ]}; @@ -126,8 +120,8 @@ xkb_symbols "stea" { key <AB02> { [ 0x1000e9b, parenleft ]}; key <AB03> { [ 0x1000ec1, 0x1000eaf ]}; key <AB04> { [ 0x1000ead, x ]}; - key <AB05> { [ 0x1000eb6 ]}; - key <AB06> { [ 0x1000eb7 ]}; + key <AB05> { [ 0x1000eb6 ]}; + key <AB06> { [ 0x1000eb7 ]}; key <AB07> { [ 0x1000e97, 0x1000ec6 ]}; key <AB08> { [ 0x1000ea1, 0x1000edd ]}; key <AB09> { [ 0x1000ec3, dollar ]}; @@ -138,5 +132,4 @@ xkb_symbols "stea" { key <KPDL> { [ comma, period ]}; include "level3(ralt_switch)" - }; diff --git a/xorg-server/xkeyboard-config/symbols/lv b/xorg-server/xkeyboard-config/symbols/lv index 0eee7deea..4b0ba6c04 100644 --- a/xorg-server/xkeyboard-config/symbols/lv +++ b/xorg-server/xkeyboard-config/symbols/lv @@ -1,4 +1,3 @@ -// $XKeyboardConfig$ // Latvian keymap version 1.1 // Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004 // @@ -29,7 +28,7 @@ // Modified by Aldis Berjoza <aldis@bsdroot.lv>, 12 april 2011 // Changes: -// * Added Latvian Ergonomic, Latvian Adapted and Latvian Modernd variants +// * Added Latvian Ergonomic, Latvian Adapted and Latvian Modern variants // Author of this work is Valdis Vītoliņš // http://odo.lv/LatvianKeyboard // http://odo.lv/Recipes/LatvianKeyboard#HErgonomiskC481stastatC5ABrasuzlikC5A1anauzLinuxdatora%22 diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch index 54b61d215..7948ab19d 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/ch @@ -8,21 +8,19 @@ xkb_symbols "extended" { name[Group1]= "Switzerland - German, Mac"; - // Alphanumeric section - - key <AE01> { [ 1, plus, plusminus, infinity ] }; - key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] }; + key <AE01> { [ 1, plus, plusminus, infinity ] }; + key <AE02> { [ 2, quotedbl, leftdoublequotemark, rightdoublequotemark ] }; key <AE03> { [ 3, asterisk, numbersign, leftcaret ] }; // not displayed here key <AE04> { [ 4, ccedilla, Ccedilla, slash ] }; key <AE05> { [ 5, percent, bracketleft ] }; key <AE06> { [ 6, ampersand, bracketright ] }; - key <AE07> { [ 7, slash, bar, backslash ] }; + key <AE07> { [ 7, slash, bar, backslash ] }; key <AE08> { [ 8, parenleft, braceleft, Ograve ] }; key <AE09> { [ 9, parenright, braceright, Ocircumflex ] }; key <AE10> { [ 0, equal, notequal, Uacute ] }; - key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] }; - key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] }; + key <AE11> { [ apostrophe, question, questiondown, NoSymbol ] }; + key <AE12> { [ dead_circumflex,dead_grave, dead_acute, asciicircum ] }; key <AD01> { [ q, Q, oe, OE ] }; key <AD02> { [ w, W, Greek_SIGMA, Aacute ] }; key <AD03> { [ e, E, EuroSign, Ediaeresis ] }; @@ -33,8 +31,8 @@ xkb_symbols "extended" { key <AD08> { [ i, I, exclamdown, idotless ] }; key <AD09> { [ o, O, oslash, Ooblique ] }; key <AD10> { [ p, P, Greek_pi, Greek_PI ] }; - key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] }; - key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] }; + key <AD11> { [ udiaeresis, egrave, section, ydiaeresis ] }; + key <AD12> { [ dead_diaeresis, exclam, grave, apostrophe ] }; key <AC01> { [ a, A, aring, Aring ] }; key <AC02> { [ s, S, ssharp, NoSymbol ] }; // ligature fl @@ -60,11 +58,11 @@ xkb_symbols "extended" { key <AB08> { [ comma, semicolon, guillemotleft, guillemotright ] }; key <AB09> { [ period, colon, ellipsis, division ] }; key <AB10> { [ minus, underscore, hyphen, emdash ] }; - key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] }; + key <TLDE> { [ section, degree, NoSymbol, NoSymbol ] }; // ligature fi // per mille key <SPCE> { [ space, nobreakspace, nobreakspace ] }; - key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; - key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] }; + key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] }; + key <BKSL> { [ dollar, sterling, paragraph, enfilledcircbullet ] }; include "kpdl(comma)" include "level3(ralt_switch)" @@ -78,9 +76,6 @@ xkb_symbols "de" { partial alphanumeric_keys xkb_symbols "fr" { - // Describes the differences between a very simple US/ASCII - // keyboard and a very simple Swiss/French keybaord - include "macintosh_vndr/ch(extended)" name[Group1]= "Switzerland - French, Mac"; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de index da5bc7772..66da8281e 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/de @@ -4,12 +4,11 @@ default partial alphanumeric_keys xkb_symbols "basic" { // Describes the differences between a very simple US/ASCII - // keyboard and a very simple German keybaord + // keyboard and a simple German keyboard. include "latin" name[Group1]= "Germany - Mac"; - // Alphanumeric section key <TLDE> { [ dead_circumflex, degree, notsign ] }; key <AE01> { [ 1, exclam, exclamdown, at ] }; key <AE02> { [ 2, quotedbl, twosuperior ] }; @@ -53,7 +52,6 @@ xkb_symbols "basic" { include "kpdl(comma)" include "level3(ralt_switch)" - }; partial alphanumeric_keys @@ -62,14 +60,14 @@ xkb_symbols "Sundeadkeys" { include "macintosh_vndr/de(basic)" name[Group1]= "Germany - Mac, Sun dead keys"; - key <TLDE> { [ SunFA_Circum, degree, notsign ] }; - key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] }; + key <TLDE> { [ SunFA_Circum, degree, notsign ] }; + key <AE12> { [ SunFA_Acute, SunFA_Grave, SunFA_Cedilla ] }; key <AD11> { [ udiaeresis, Udiaeresis, SunFA_Diaeresis ] }; - key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] }; - key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] }; - key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] }; + key <AD12> { [ plus, asterisk, SunFA_Tilde, dead_macron ] }; + key <AC10> { [ odiaeresis, Odiaeresis, SunFA_Acute ] }; + key <AC11> { [ adiaeresis, Adiaeresis, SunFA_Circum ] }; - key <BKSL> { [ numbersign, acute, SunFA_Grave ] }; + key <BKSL> { [ numbersign, acute, SunFA_Grave ] }; }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk index 11e38598c..e464519e0 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/dk @@ -21,26 +21,24 @@ xkb_symbols "basic" { key <AE08> { [ 8, parenleft, bracketleft, guillemotleft ]}; key <AE09> { [ 9, parenright, bracketright, guillemotright ]}; key <AE10> { [ 0, equal, braceright, degree ]}; + key <AE11> { [ plus, question, plusminus, questiondown ]}; + key <AE12> { [ dead_acute, dead_grave, bar, brokenbar ]}; + key <AB03> { [ c, C, copyright, NoSymbol ]}; key <AB08> { [ comma, semicolon, dead_cedilla, dead_ogonek ]}; key <AB09> { [ period, colon, periodcentered, dead_abovedot ]}; - key <AB03> { [ c, C, copyright, NoSymbol ]}; key <AB10> { [ minus, underscore, hyphen, macron ]}; - key <AC01> { [ a, A, ordfeminine, masculine ]}; - key <AC03> { [ d, D, eth, ETH ]}; - key <AD03> { [ e, E, EuroSign, cent ]}; - key <AD04> { [ r, R, registered, NoSymbol ]}; - key <AD05> { [ t, T, thorn, THORN ]}; - key <AD08> { [ i, I, NoSymbol, NoSymbol ]}; - key <AD09> { [ o, O, oe, OE ]}; - key <AC10> { [ ae, AE ]}; - key <AE11> { [ plus, question, plusminus, questiondown ]}; + key <AC01> { [ a, A, ordfeminine, masculine ]}; + key <AC03> { [ d, D, eth, ETH ]}; + key <AC10> { [ ae, AE ]}; key <AC11> { [ oslash, Ooblique ]}; - key <BKSL> { [ apostrophe, asterisk, dead_doubleacute, multiply ]}; + key <AD03> { [ e, E, EuroSign, cent ]}; + key <AD04> { [ r, R, registered, NoSymbol ]}; + key <AD05> { [ t, T, thorn, THORN ]}; + key <AD08> { [ i, I, NoSymbol, NoSymbol ]}; + key <AD09> { [ o, O, oe, OE ]}; key <AD11> { [ aring, Aring ]}; - key <AE12> { [ dead_acute, dead_grave, bar, brokenbar ]}; - key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ]}; - - // End alphanumeric section + key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, dead_caron ]}; + key <BKSL> { [ apostrophe, asterisk, dead_doubleacute, multiply ]}; include "eurosign(e)" include "level3(ralt_switch)" @@ -52,7 +50,7 @@ xkb_symbols "nodeadkeys" { name[Group1]= "Denmark - Mac, eliminate dead keys"; key <AE12> { [ acute, grave, bar, ogonek ] }; - key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; + key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi index 7a865d2bc..842c7b6cf 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fi @@ -1,15 +1,9 @@ partial default alphanumeric_keys xkb_symbols "basic" { - - // Describes the differences between a very simple mac_US - // keyboard and a very simple Swedish(Finland) keybaord - include "macintosh_vndr/se(basic)" // for consistent naming name[Group1]= "Finland - Mac"; - }; - partial alphanumeric_keys xkb_symbols "nodeadkeys" { include "macintosh_vndr/se(basic)" // for consistent naming diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr index 9a8f8de23..b2c9354e0 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr @@ -33,7 +33,6 @@ xkb_symbols "extended" { key <ESC> { [ Escape ] }; - // Alphanumeric section key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] }; key <ENTR> { [ KP_Enter ] }; key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple @@ -91,7 +90,6 @@ xkb_symbols "extended" { key <AB10> { [ equal, plus, notequal, plusminus ] }; key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; - // End alphanumeric section include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb index 4e4248561..f85078aaa 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/gb @@ -12,8 +12,6 @@ xkb_symbols "basic" { key <AE03> { [ 3, sterling, numbersign ] }; key <TLDE> { [ section, plusminus ] }; key <LSGT> { [ grave, asciitilde ] }; - - // End alphanumeric section include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it index 2438231cd..3784b0e05 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/it @@ -2,7 +2,6 @@ xkb_symbols "extended" { name[Group1]= "Italy - Mac"; - // Alphanumeric section key <LSGT> { [ less, greater ] }; key <TLDE> { [ at, numbersign, periodcentered ] }; key <AE01> { [ ampersand, 1, guillemotleft,guillemotright ] }; @@ -55,8 +54,6 @@ xkb_symbols "extended" { key <AB09> { [ colon, slash, bar, backslash ] }; key <AB10> { [ ograve, exclam, exclamdown ] }; - // End alphanumeric section - include "kpdl(dot)" include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam index dcb9db624..485f12720 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/latam @@ -2,7 +2,7 @@ partial default alphanumeric_keys xkb_symbols "basic" { // Describes the differences between a very simple mac_US - // keyboard and a very simple Spanish keybaord + // keyboard and a very simple Spanish keyboard. include "latin" name[Group1]= "Latin American - Mac"; @@ -31,7 +31,5 @@ xkb_symbols "basic" { key <AC11> { [ semicolon, colon ] }; key <BKSL> { [ apostrophe, quotedbl ] }; - // End alphanumeric section - include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl index 5eb66c444..ad0ee4bf2 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/nl @@ -1,15 +1,9 @@ partial default alphanumeric_keys xkb_symbols "basic" { - // Describes the differences between a very simple mac_US - // keyboard and a very simple netherland keybaord - include "latin" name[Group1]= "Netherlands - Mac"; include "level3(ralt_switch)" - -// do just nothing - }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no index fb0cb74a2..53e62cf6d 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/no @@ -2,7 +2,7 @@ partial default alphanumeric_keys xkb_symbols "basic" { // Describes the differences between a very simple en_US - // keyboard and a very simple Norwegian keybaord + // keyboard and a very simple Norwegian keyboard. include "latin" @@ -10,28 +10,26 @@ xkb_symbols "basic" { key <TLDE> { [ bar, section ] }; key <AE02> { [ 2, quotedbl, at, oneeighth ] }; + key <AE03> { [ 3, numbersign, sterling, sterling ] }; key <AE04> { [ 4, currency, dollar, dollar ] }; - key <AE03> { [ 3, numbersign, sterling, sterling ] }; key <AE06> { [ 6, ampersand ] }; key <AE07> { [ 7, slash, bar, backslash ] }; - key <AE08> { [ 8, parenleft, bracketleft, braceleft ] }; - key <AE09> { [ 9, parenright, bracketright, braceright ] }; + key <AE08> { [ 8, parenleft, bracketleft, braceleft ] }; + key <AE09> { [ 9, parenright, bracketright, braceright ] }; key <AE10> { [ 0, equal ] }; + key <AE11> { [ plus, question ] }; + key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] }; key <AB08> { [ comma, semicolon ] }; key <AB09> { [ period, colon ] }; key <AB10> { [ minus, underscore ] }; - key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] }; - key <AE11> { [ plus, question ] }; + key <AC10> { [ oslash, Ooblique, odiaeresis, Odiaeresis ] }; key <AC11> { [ ae, AE ] }; key <AD11> { [ aring, Aring ] }; - key <AE12> { [ dead_grave, dead_acute, acute, dead_ogonek ] }; - key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; + key <AD12> { [ diaeresis, asciicircum, asciitilde, dead_macron ] }; key <BKSL> { [ at, asterisk ] }; key <LSGT> { [ less, greater ] }; - // End alphanumeric section - include "eurosign(e)" include "level3(ralt_switch)" }; @@ -45,6 +43,6 @@ xkb_symbols "nodeadkeys" { name[Group1]= "Norway - Mac, eliminate dead keys"; key <AE12> { [ grave, acute, acute, ogonek ] }; - key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] }; + key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] }; }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt index 01ac86d85..f5b56a2c2 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/pt @@ -4,7 +4,7 @@ partial default alphanumeric_keys xkb_symbols "basic" { // Describes the differences between a very simple en_US - // keyboard and a very simple Portuguese keybaord + // keyboard and a very simple Portuguese keyboard. include "latin" @@ -12,8 +12,8 @@ xkb_symbols "basic" { key <LSGT> { [ less, greater, bar, brokenbar ] }; key <AE02> { [ 2, quotedbl, at, oneeighth ] }; - key <AE04> { [ 4, dollar, section, dollar ] }; - key <AE03> { [ 3, numbersign, sterling, sterling ] }; + key <AE03> { [ 3, numbersign, sterling, sterling ] }; + key <AE04> { [ 4, dollar, section, dollar ] }; key <AE06> { [ 6, ampersand ] }; key <AE07> { [ 7, slash ] }; key <AE08> { [ 8, parenleft, bracketleft, braceleft ] }; @@ -29,7 +29,6 @@ xkb_symbols "basic" { key <AC12> { [ backslash, bar ] }; key <AD11> { [ masculine, ordfeminine ] }; key <AD12> { [ dead_acute, dead_grave ] }; - // End alphanumeric section include "eurosign(e)" include "level3(ralt_switch)" diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se index d2d05f248..beb226fa3 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/se @@ -2,7 +2,7 @@ partial default alphanumeric_keys xkb_symbols "basic" { // Describes the differences between a very simple en_US - // keyboard and a very simple Swedish(Sweden) keybaord + // keyboard and a very simple Swedish(Sweden) keyboard. include "latin" @@ -11,25 +11,25 @@ xkb_symbols "basic" { key <TLDE> { [ section, degree ] }; key <AE01> { [ 1, exclam, copyright, exclamdown ] }; - key <AE02> { [ 2, quotedbl, at, oneeighth ] }; + key <AE02> { [ 2, quotedbl, at, oneeighth ] }; key <AE03> { [ 3, numbersign, sterling, yen ] }; - key <AE04> { [ 4, currency, dollar, cent ] }; + key <AE04> { [ 4, currency, dollar, cent ] }; key <AE06> { [ 6, ampersand ] }; - key <AE07> { [ 7, slash, bar, backslash ] }; + key <AE07> { [ 7, slash, bar, backslash ] }; key <AE08> { [ 8, parenleft, bracketleft, braceleft ] }; key <AE09> { [ 9, parenright, bracketright, braceright ] }; key <AB08> { [ comma, semicolon ] }; key <AE10> { [ 0, equal ] }; + key <AE11> { [ plus, question ] }; + key <AE12> { [ acute, grave ] }; key <AB09> { [ period, colon ] }; key <AB10> { [ minus, underscore ] }; - key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] }; - key <AE11> { [ plus, question ] }; - key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; + key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] }; + key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; key <AD11> { [ aring, Aring ] }; - key <AE12> { [ acute, grave ] }; key <AD12> { [ diaeresis, asciicircum, asciitilde ] }; - key <BKSL> { [ apostrophe, asterisk, at ] }; - key <LSGT> { [ less, greater, bar, brokenbar ] }; + key <BKSL> { [ apostrophe, asterisk, at ] }; + key <LSGT> { [ less, greater, bar, brokenbar ] }; include "kpdl(comma)" include "eurosign(e)" diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us index d0cf5600b..81e4b77b9 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/us @@ -5,7 +5,6 @@ xkb_symbols "extended" { name[Group1]= "USA"; key <ESC> { [ Escape ] }; - // Alphanumeric section key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, at ] }; @@ -58,13 +57,11 @@ xkb_symbols "extended" { key <AB10> { [ slash, question ] }; key <SPCE> { [ space ] }; - // End alphanumeric section - include "eurosign(e)" include "keypad" - key <KPEQ> { [ equal ] }; + key <KPEQ> { [ equal ] }; }; hidden @@ -104,11 +101,11 @@ xkb_symbols "oldmac" { key <RGHT> { [ Right ] }; // End "Editing" section - key <BKSP> { [ BackSpace ] }; - key <TAB> { [ Tab, ISO_Left_Tab ] }; + key <BKSP> { [ BackSpace ] }; + key <TAB> { [ Tab, ISO_Left_Tab ] }; key <RTRN> { [ Return ] }; key <CAPS> { [ Caps_Lock ] }; - key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; + key <NMLK> { [ Num_Lock, Pointer_EnableKeys ] }; // Begin "Modifier" section key <LFSH> { [ Shift_L ] }; diff --git a/xorg-server/xkeyboard-config/symbols/md b/xorg-server/xkeyboard-config/symbols/md index f7700e930..18b32fdee 100644 --- a/xorg-server/xkeyboard-config/symbols/md +++ b/xorg-server/xkeyboard-config/symbols/md @@ -30,12 +30,10 @@ xkb_symbols "basic" { partial alphanumeric_keys xkb_symbols "gag" { -include "level3(ralt_switch)" -include "us(basic)" + include "us(basic)" -name[Group1]="Moldavian (Gagauz)"; + name[Group1]="Moldavian (Gagauz)"; - // Alphanumeric section key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, quotedbl, at ] }; @@ -87,6 +85,6 @@ name[Group1]="Moldavian (Gagauz)"; key <AB10> { [ period, greater, slash ] }; key <BKSL> { [ backslash, bar ] }; - // End alphanumeric section - + + include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/mm b/xorg-server/xkeyboard-config/symbols/mm index 8ab8f0de2..060e76ade 100644 --- a/xorg-server/xkeyboard-config/symbols/mm +++ b/xorg-server/xkeyboard-config/symbols/mm @@ -2,7 +2,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Burmese"; - // Alphanumeric section key <TLDE> { [ U1050, U100E, grave, asciitilde ] }; key <AE01> { [ U1041, U100D, 1, exclam ] }; key <AE02> { [ U1042, U1052, 2, at ] }; @@ -54,5 +53,4 @@ xkb_symbols "basic" { key <AB10> { [ slash, question ] }; key <BKSL> { [ U104F, U1051, backslash, bar ] }; - // End alphanumeric section }; diff --git a/xorg-server/xkeyboard-config/symbols/mn b/xorg-server/xkeyboard-config/symbols/mn index 279514a4a..943cc0c1f 100644 --- a/xorg-server/xkeyboard-config/symbols/mn +++ b/xorg-server/xkeyboard-config/symbols/mn @@ -60,8 +60,6 @@ xkb_symbols "basic" { key <AB09> { [ Cyrillic_ve, Cyrillic_VE, guillemotright ] }; key <AB10> { [ Cyrillic_yu, Cyrillic_YU, backslash ] }; - // End alphanumeric section - key <SPCE> { [ space, space, nobreakspace ] }; include "level3(ralt_switch)" diff --git a/xorg-server/xkeyboard-config/symbols/mv b/xorg-server/xkeyboard-config/symbols/mv index e82b1e873..5c9177b06 100644 --- a/xorg-server/xkeyboard-config/symbols/mv +++ b/xorg-server/xkeyboard-config/symbols/mv @@ -1,7 +1,4 @@ -// -// NOTES: -// -//Keymap for thaana/divehi script (divehi language) +// Keymap for Thaana/Dhivehi script (Dhivehi language). partial default alphanumeric_keys xkb_symbols "basic" { @@ -32,12 +29,9 @@ xkb_symbols "basic" { key <AD08> { [ 0x10007A8, 0x10007A9 ] }; key <AD09> { [ 0x10007AE, 0x10007AF ] }; key <AD10> { [ 0x1000795, division ] }; -// The following brackets are as they appear on the US_en keyboard. -//Please verify whether the names used are correct. I referred to keysymdef.h key <AD11> { [ bracketleft, braceleft ] }; key <AD12> { [ bracketright, braceright ] }; - key <AC01> { [ 0x10007A6, 0x10007A7 ] }; key <AC02> { [ 0x1000790, 0x1000781 ] }; key <AC03> { [ 0x100078B, 0x1000791 ] }; @@ -53,7 +47,6 @@ xkb_symbols "basic" { key <LSGT> { [ bar, brokenbar ] }; key <AB01> { [ 0x1000792, 0x10007A1 ] }; -//multiply sign is the same as the algebraic symbol which looks like an italicized x. I am presuming its the same thing here. If not, please substitute an 'x' instead key <AB02> { [ multiply, 0x1000798 ] }; key <AB03> { [ 0x1000797, 0x100079D ] }; key <AB04> { [ 0x1000788, 0x10007A5 ] }; @@ -64,10 +57,6 @@ xkb_symbols "basic" { key <AB09> { [ period, greater ] }; key <AB10> { [ slash, Arabic_question_mark ] }; - // End alphanumeric section - - // Begin modifier mappings - modifier_map Shift { Shift_L }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L }; diff --git a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp index 6a9c32832..2931f3ad5 100644 --- a/xorg-server/xkeyboard-config/symbols/nec_vndr/jp +++ b/xorg-server/xkeyboard-config/symbols/nec_vndr/jp @@ -93,7 +93,6 @@ default xkb_symbols "pc98" { key <NFER> { [ Muhenkan ] }; key <SPCE> { [ space ] }; key <XFER> { [ Henkan, Kanji ] }; - // End alphanumeric section // Begin "Function" section @@ -154,7 +153,6 @@ default xkb_symbols "pc98" { // key <KPEN> { [ KP_Enter ] }; // End "Keypad" section - // begin modifier mappings modifier_map Shift { Shift_L }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L }; diff --git a/xorg-server/xkeyboard-config/symbols/nl b/xorg-server/xkeyboard-config/symbols/nl index 5e3940b99..ed25af68f 100644 --- a/xorg-server/xkeyboard-config/symbols/nl +++ b/xorg-server/xkeyboard-config/symbols/nl @@ -120,7 +120,6 @@ xkb_symbols "Sundeadkeys" { // For naming consistency include "nl(basic)" - }; partial alphanumeric_keys @@ -136,17 +135,11 @@ xkb_symbols "sundeadkeys" { partial alphanumeric_keys xkb_symbols "mac" { - // Describes the differences between a very simple mac_US - // keyboard and a very simple netherland keybaord - include "latin" name[Group1]= "Dutch (Macintosh)"; include "level3(ralt_switch)" - -// do just nothing - }; // EXTRAS: diff --git a/xorg-server/xkeyboard-config/symbols/no b/xorg-server/xkeyboard-config/symbols/no index 208d1ecb2..5e4cffdcf 100644 --- a/xorg-server/xkeyboard-config/symbols/no +++ b/xorg-server/xkeyboard-config/symbols/no @@ -11,11 +11,11 @@ xkb_symbols "basic" { name[Group1]="Norwegian"; - key <AB09> { [ period, colon, ellipsis, periodcentered ] }; + key <AB09> { [ period, colon, ellipsis, periodcentered ] }; key <AB10> { [ minus, underscore, endash, emdash ] }; key <AD04> { [ r, R, registered, trademark ] }; - key <AD10> { [ p, P, Greek_pi, Greek_PI ] }; - key <AE05> { [ 5, percent, onehalf, 0x1002030 ] }; + key <AD10> { [ p, P, Greek_pi, Greek_PI ] }; + key <AE05> { [ 5, percent, onehalf, 0x1002030 ] }; key <AE11> { [ plus, question, plusminus, questiondown ] }; key <AE12> { [ backslash, dead_grave, dead_acute, notsign ] }; @@ -45,7 +45,7 @@ xkb_symbols "nodeadkeys" { name[Group1]="Norwegian (eliminate dead keys)"; key <AE12> { [ backslash, grave, acute, ogonek ] }; - key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] }; + key <AD12> { [ diaeresis, asciicircum, asciitilde, macron ] }; key <AC10> { [ oslash, Ooblique, acute, doubleacute ] }; key <AC11> { [ ae, AE, asciicircum, caron ] }; key <AB08> { [ comma, semicolon, cedilla, ogonek ] }; @@ -64,7 +64,7 @@ xkb_symbols "dvorak" { key <AE01> { [ 1, exclam, exclamdown, onesuperior ] }; key <AE02> { [ 2, quotedbl, at, twosuperior ] }; key <AE03> { [ 3, numbersign, sterling, threesuperior ] }; - key <AE04> { [ 4, currency, dollar,onequarter ] }; + key <AE04> { [ 4, currency, dollar, onequarter ] }; key <AE05> { [ 5, percent, onehalf, onehalf ] }; key <AE06> { [ 6, ampersand, threequarters, threequarters ] }; key <AE07> { [ 7, slash, braceleft, division ] }; @@ -72,7 +72,7 @@ xkb_symbols "dvorak" { key <AE09> { [ 9, parenright, bracketright ] }; key <AE10> { [ 0, equal, braceright ] }; key <AE11> { [ plus, question, plusminus, questiondown ] }; - key <AE12> { [ backslash, grave, dead_acute, dead_grave ] }; + key <AE12> { [ backslash, grave, dead_acute, dead_grave ] }; key <AD01> { [ aring, Aring, braceright, bracketright ] }; key <AD02> { [ comma, semicolon, dead_cedilla, cedilla ] }; @@ -104,18 +104,17 @@ xkb_symbols "dvorak" { include "level3(ralt_switch)" }; -// based on -// Northern Sami keyboards for Finland, Norway and Sweden -// -// Describes the differences between a very simple en_US -// keyboard and a Norwegian Northern Sami keyboard (with -// dead key support) according to the spec on -// http://www.hum.uit.no/a/trond/se-lat9-no-keys.html -// Written by Børre Gaup <boerre.gaup@pc.nu> -// - partial alphanumeric_keys xkb_symbols "smi" { + + // Northern Sami keyboards for Finland, Norway and Sweden + // + // Describes the differences between a very simple en_US + // keyboard and a Norwegian Northern Sami keyboard (with + // dead-key support) according to the spec on + // http://www.hum.uit.no/a/trond/se-lat9-no-keys.html + // Written by Børre Gaup <boerre.gaup@pc.nu>. + include "latin" name[Group1]= "Northern Saami (Norway)"; @@ -191,7 +190,7 @@ partial alphanumeric_keys xkb_symbols "mac" { // Describes the differences between a very simple en_US - // keyboard and a very simple Norwegian keybaord + // keyboard and a very simple Norwegian keyboard. include "latin(type4)" name[Group1]= "Norwegian (Macintosh)"; diff --git a/xorg-server/xkeyboard-config/symbols/nokia_vndr/su-8w b/xorg-server/xkeyboard-config/symbols/nokia_vndr/su-8w index 441b3fee3..029906d47 100644 --- a/xorg-server/xkeyboard-config/symbols/nokia_vndr/su-8w +++ b/xorg-server/xkeyboard-config/symbols/nokia_vndr/su-8w @@ -428,13 +428,13 @@ xkb_symbols "base" { key <FK11> { [ F10 ] }; key <FK12> { [ F12 ] }; - // begin modifier mappings + // Begin modifier mappings modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; modifier_map Mod2 { Num_Lock }; - // Fake keys for virtual<->real modifiers mapping + // Fake keys for virtual<->real modifiers mapping: key <LVL3> { [ ISO_Level3_Shift ] }; key <MDSW> { [ Mode_switch ] }; modifier_map Mod5 { <LVL3>, <MDSW> }; @@ -450,6 +450,7 @@ xkb_symbols "base" { key <HYPR> { [ NoSymbol, Hyper_L ] }; modifier_map Mod4 { <HYPR> }; + // End modifier mappings key <INS> { [ Insert ] }; key <DELE> { [ Delete ] }; diff --git a/xorg-server/xkeyboard-config/symbols/pc b/xorg-server/xkeyboard-config/symbols/pc index d25970963..20bb92f31 100644 --- a/xorg-server/xkeyboard-config/symbols/pc +++ b/xorg-server/xkeyboard-config/symbols/pc @@ -1,14 +1,14 @@ default partial alphanumeric_keys modifier_keys xkb_symbols "pc105" { - key <ESC> { [ Escape ] }; + key <ESC> { [ Escape ] }; - // the extra key on most European keyboards - key <LSGT> { [ less, greater, bar, brokenbar ] }; + // The extra key on many European keyboards: + key <LSGT> { [ less, greater, bar, brokenbar ] }; - // these keys are common to all layouts - key <BKSL> { [ backslash, bar ] }; - key <SPCE> { [ space ] }; + // The following keys are common to all layouts. + key <BKSL> { [ backslash, bar ] }; + key <SPCE> { [ space ] }; include "srvr_ctrl(fkey2vt)" include "pc(editing)" @@ -17,32 +17,28 @@ xkb_symbols "pc105" { key <BKSP> { [ BackSpace, BackSpace ] }; key <TAB> { [ Tab, ISO_Left_Tab ] }; - key <RTRN> { [ Return ] }; + key <RTRN> { [ Return ] }; - key <CAPS> { [ Caps_Lock ] }; + key <CAPS> { [ Caps_Lock ] }; + key <NMLK> { [ Num_Lock ] }; - key <NMLK> { [ Num_Lock ] }; - - key <LFSH> { [ Shift_L ] }; - key <LCTL> { [ Control_L ] }; - - key <LWIN> { [ Super_L ] }; - - key <RTSH> { [ Shift_R ] }; - key <RCTL> { [ Control_R ] }; - - key <RWIN> { [ Super_R ] }; + key <LFSH> { [ Shift_L ] }; + key <LCTL> { [ Control_L ] }; + key <LWIN> { [ Super_L ] }; + key <RTSH> { [ Shift_R ] }; + key <RCTL> { [ Control_R ] }; + key <RWIN> { [ Super_R ] }; key <MENU> { [ Menu ] }; - // begin modifier mappings + // Beginning of modifier mappings. modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; modifier_map Mod2 { Num_Lock }; modifier_map Mod4 { Super_L, Super_R }; - // Fake keys for virtual<->real modifiers mapping + // Fake keys for virtual<->real modifiers mapping: key <LVL3> { [ ISO_Level3_Shift ] }; key <MDSW> { [ Mode_switch ] }; modifier_map Mod5 { <LVL3>, <MDSW> }; @@ -58,6 +54,7 @@ xkb_symbols "pc105" { key <HYPR> { [ NoSymbol, Hyper_L ] }; modifier_map Mod4 { <HYPR> }; + // End of modifier mappings. key <OUTP> { [ XF86Display ] }; key <KITG> { [ XF86KbdLightOnOff ] }; @@ -71,7 +68,7 @@ xkb_symbols "editing" { type= "PC_ALT_LEVEL2", symbols[Group1]= [ Print, Sys_Req ] }; - key <SCLK> { [ Scroll_Lock ] }; + key <SCLK> { [ Scroll_Lock ] }; key <PAUS> { type= "PC_CONTROL_LEVEL2", symbols[Group1]= [ Pause, Break ] diff --git a/xorg-server/xkeyboard-config/symbols/pk b/xorg-server/xkeyboard-config/symbols/pk index abf2f6695..de800d4c7 100644 --- a/xorg-server/xkeyboard-config/symbols/pk +++ b/xorg-server/xkeyboard-config/symbols/pk @@ -2,10 +2,9 @@ // Developed by: // Zaeem Arshad <zaeem@linux.net.pk> // Last update: 2004-03-12 -//Notice: -//Alt key combinations are yet to be put in. The unavailable keys are those which do not have a corresponding //glyph in unicode. - -// based on a keyboard map from an 'xkb/symbols/ur' file +// Notice: +// Alt-key combinations are yet to be put in. The unavailable keys are +// those which do not have a corresponding glyph in Unicode. partial default alphanumeric_keys xkb_symbols "urd-phonetic" { @@ -38,27 +37,27 @@ xkb_symbols "urd-phonetic" { key <AD11> { [ 0x100005d , 0x100007D ] }; key <AD12> { [ 0x100005b , 0x100007B ] }; - key <AC01> { [ 0x1000627 , 0x1000622 ] }; + key <AC01> { [ 0x1000627 , 0x1000622 ] }; key <AC02> { [ 0x1000633 , 0x1000635 ] }; key <AC03> { [ 0x100062f , 0x1000688 ] }; - key <AC04> { [ 0x1000641 , 0x1000651 ] }; + key <AC04> { [ 0x1000641 , 0x1000651 ] }; key <AC05> { [ 0x10006af , 0x100063a ] }; - key <AC06> { [ 0x100062D, 0x10006BE ] }; + key <AC06> { [ 0x100062D , 0x10006BE ] }; key <AC07> { [ 0x100062c , 0x1000636 ] }; key <AC08> { [ 0x10006a9 , 0x100062e ] }; - key <AC09> { [ 0x1000644 , 0x1000654 ] }; + key <AC09> { [ 0x1000644 , 0x1000654 ] }; key <AC10> { [ 0x100061b , 0x100003a ] }; - key <AC11> { [ 0x1000027 , 0x1000022 ] }; - key <BKSL> { [ 0x100005C, 0x100007C ] }; + key <AC11> { [ 0x1000027 , 0x1000022 ] }; + key <BKSL> { [ 0x100005C , 0x100007C ] }; - key <LSGT> { [ bar , brokenbar ] }; - key <AB01> { [ 0x1000632 , 0x1000630, 0x100200E ] }; + key <LSGT> { [ bar , brokenbar ] }; + key <AB01> { [ 0x1000632 , 0x1000630, 0x100200E ] }; key <AB02> { [ 0x1000634 , 0x1000698, 0x100202A ] }; - key <AB03> { [ 0x1000686 , 0x100062b, 0x100202D ] }; + key <AB03> { [ 0x1000686 , 0x100062b, 0x100202D ] }; key <AB04> { [ 0x1000637 , 0x1000638, 0x100202C ] }; key <AB05> { [ 0x1000628 , 0x100002e, 0x100202E ] }; key <AB06> { [ 0x1000646 , 0x10006ba, 0x100202B ] }; - key <AB07> { [ 0x1000645 , 0x1000658, 0x100200F ] }; + key <AB07> { [ 0x1000645 , 0x1000658, 0x100200F ] }; key <AB08> { [ 0x100060c , 0x100003c ] }; key <AB09> { [ 0x10006d4 , 0x100003E ] }; key <AB10> { [ 0x100002f , 0x100061f ] }; @@ -66,8 +65,6 @@ xkb_symbols "urd-phonetic" { // key <RALT> { [ Mode_switch, Multi_key ] }; include "level3(ralt_switch)" - - // End alphanumeric section }; partial alphanumeric_keys @@ -77,61 +74,60 @@ xkb_symbols "urd-crulp" { // www.crulp.org phonetic v1.1 key <TLDE> { [ 0x100007E , 0x100064B ] }; - key <AE01> { [ 0x10006F1 , 0x1000031, 0x1000021 ] }; + key <AE01> { [ 0x10006F1 , 0x1000031, 0x1000021 ] }; key <AE02> { [ 0x10006F2 , 0x1000032, 0x1000040 ] }; key <AE03> { [ 0x10006F3 , 0x1000033, 0x1000023 ] }; key <AE04> { [ 0x10006F4 , 0x1000034 ] }; key <AE05> { [ 0x10006F5 , 0x1000035, 0x100066A ] }; - key <AE06> { [ 0x10006F6 , 0x1000036 ] }; - key <AE07> { [ 0x10006F7 , 0x1000037, 0x1000026 ] }; + key <AE06> { [ 0x10006F6 , 0x1000036 ] }; + key <AE07> { [ 0x10006F7 , 0x1000037, 0x1000026 ] }; key <AE08> { [ 0x10006F8 , 0x1000038, 0x100002A ] }; key <AE09> { [ 0x10006F9 , 0x1000039, 0x1000029 ] }; key <AE10> { [ 0x10006F0 , 0x1000030, 0x1000028 ] }; - key <AE11> { [ 0x100002D , 0x100005F ] }; + + key <AE11> { [ 0x100002D , 0x100005F ] }; key <AE12> { [ 0x100003D , 0x100002B ] }; - key <AD01> { [ 0x1000642 , 0x1000652 ] }; - key <AD02> { [ 0x1000648 , 0x1000651, 0x1000602 ] }; + key <AD01> { [ 0x1000642 , 0x1000652 ] }; + key <AD02> { [ 0x1000648 , 0x1000651, 0x1000602 ] }; key <AD03> { [ 0x1000639 , 0x1000670, 0x1000656 ] }; key <AD04> { [ 0x1000631 , 0x1000691, 0x1000613 ] }; key <AD05> { [ 0x100062a , 0x1000679, 0x1000614 ] }; key <AD06> { [ 0x10006d2 , 0x100064E, 0x1000601 ] }; key <AD07> { [ 0x1000621 , 0x1000626, 0x1000654 ] }; - key <AD08> { [ 0x10006cc , 0x1000650, 0x1000611 ] }; + key <AD08> { [ 0x10006cc , 0x1000650, 0x1000611 ] }; key <AD09> { [ 0x10006c1 , 0x10006c3 ] }; - key <AD10> { [ 0x100067e , 0x100064f, 0x1000657 ] }; + key <AD10> { [ 0x100067e , 0x100064f, 0x1000657 ] }; key <AD11> { [ 0x100005d , 0x100007D ] }; key <AD12> { [ 0x100005b , 0x100007B ] }; - key <AC01> { [ 0x1000627 , 0x1000622, 0x100FDF2 ] }; - key <AC02> { [ 0x1000633 , 0x1000635, 0x1000610 ] }; - key <AC03> { [ 0x100062f , 0x1000688, 0x100FDFA ] }; - key <AC04> { [ 0x1000641 , 0x1000651 ] }; + key <AC01> { [ 0x1000627 , 0x1000622, 0x100FDF2 ] }; + key <AC02> { [ 0x1000633 , 0x1000635, 0x1000610 ] }; + key <AC03> { [ 0x100062f , 0x1000688, 0x100FDFA ] }; + key <AC04> { [ 0x1000641 , 0x1000651 ] }; key <AC05> { [ 0x10006af , 0x100063a ] }; - key <AC06> { [ 0x100062D, 0x10006BE, 0x1000612 ] }; + key <AC06> { [ 0x100062D , 0x10006BE, 0x1000612 ] }; key <AC07> { [ 0x100062c , 0x1000636, 0x100FDFB ] }; key <AC08> { [ 0x10006a9 , 0x100062e ] }; - key <AC09> { [ 0x1000644 , 0x1000654 ] }; + key <AC09> { [ 0x1000644 , 0x1000654 ] }; key <AC10> { [ 0x100061b , 0x100003a ] }; - key <AC11> { [ 0x1000027 , 0x1000022 ] }; - key <BKSL> { [ 0x100005C, 0x100007C ] }; + key <AC11> { [ 0x1000027 , 0x1000022 ] }; + key <BKSL> { [ 0x100005C , 0x100007C ] }; - key <LSGT> { [ bar , brokenbar ] }; - key <AB01> { [ 0x1000632 , 0x1000630, 0x100060F ] }; + key <LSGT> { [ bar , brokenbar ] }; + key <AB01> { [ 0x1000632 , 0x1000630, 0x100060F ] }; key <AB02> { [ 0x1000634 , 0x1000698, 0x100060E ] }; - key <AB03> { [ 0x1000686 , 0x100062b, 0x1000603 ] }; + key <AB03> { [ 0x1000686 , 0x100062b, 0x1000603 ] }; key <AB04> { [ 0x1000637 , 0x1000638 ] }; - key <AB05> { [ 0x1000628 , 0x100002e, 0x100FDFD ] }; - key <AB06> { [ 0x1000646 , 0x10006ba, 0x1000600 ] }; - key <AB07> { [ 0x1000645 , 0x1000658 ] }; + key <AB05> { [ 0x1000628 , 0x100002e, 0x100FDFD ] }; + key <AB06> { [ 0x1000646 , 0x10006ba, 0x1000600 ] }; + key <AB07> { [ 0x1000645 , 0x1000658 ] }; key <AB08> { [ 0x100060c , 0x100003c, 0x100003C ] }; key <AB09> { [ 0x10006d4 , 0x100066B, 0x100003E ] }; - key <AB10> { [ 0x100002f , 0x100061F ] }; + key <AB10> { [ 0x100002f , 0x100061F ] }; // key <RALT> { [ Mode_switch, Multi_key ] }; include "level3(ralt_switch)" - - // End alphanumeric section }; @@ -151,12 +147,12 @@ xkb_symbols "urd-nla" { key <AE08> { [ 0x1000038 , 0x100066D ] }; key <AE09> { [ 0x1000039 , 0x1000029 ] }; key <AE10> { [ 0x1000030 , 0x1000028 ] }; - key <AE11> { [ 0x100002D , 0x100005F ] }; + key <AE11> { [ 0x100002D , 0x100005F ] }; key <AE12> { [ 0x100003D , 0x100002B ] }; key <AD01> { [ 0x1000637 , 0x1000638, 0x100200D ] }; - key <AD02> { [ 0x1000635 , 0x1000636, 0x100200C ] }; + key <AD02> { [ 0x1000635 , 0x1000636, 0x100200C ] }; key <AD03> { [ 0x10006BE , 0x1000630 ] }; - key <AD04> { [ 0x100062F , 0x1000688 ] }; + key <AD04> { [ 0x100062F , 0x1000688 ] }; key <AD05> { [ 0x1000679 , 0x100062B ] }; key <AD06> { [ 0x100067E , 0x1000651 ] }; key <AD07> { [ 0x100062A , 0x10006C3 ] }; @@ -176,13 +172,13 @@ xkb_symbols "urd-nla" { key <AC08> { [ 0x10006a9 , 0x10006AF ] }; key <AC09> { [ 0x10006CC , 0x100064A ] }; key <AC10> { [ 0x100061b , 0x100003a ] }; - key <AC11> { [ 0x1000027 , 0x1000022 ] }; - key <BKSL> { [ 0x100005C , 0x100007C ] }; + key <AC11> { [ 0x1000027 , 0x1000022 ] }; + key <BKSL> { [ 0x100005C , 0x100007C ] }; key <LSGT> { [ bar , brokenbar ] }; - key <AB01> { [ 0x1000642 , 0x100200D, 0x100200E ] }; + key <AB01> { [ 0x1000642 , 0x100200D, 0x100200E ] }; key <AB02> { [ 0x1000641 , 0x100200C, 0x100202A ] }; - key <AB03> { [ 0x10006D2 , 0x10006D3, 0x100202D ] }; + key <AB03> { [ 0x10006D2 , 0x10006D3, 0x100202D ] }; key <AB04> { [ 0x1000633 , 0x100200E, 0x100202C ] }; key <AB05> { [ 0x1000634 , 0x1000624, 0x100202E ] }; key <AB06> { [ 0x100063A , 0x1000626, 0x100202B ] }; @@ -191,10 +187,7 @@ xkb_symbols "urd-nla" { key <AB09> { [ 0x10006d4 , 0x100003C ] }; key <AB10> { [ 0x100002F , 0x100061f ] }; - include "level3(ralt_switch)" - - // End alphanumeric section }; partial alphanumeric_keys @@ -202,7 +195,7 @@ xkb_symbols "snd" { name[Group1]= "Sindhi"; // www.bhurgri.com - key <TLDE> { [ 0x1002019, 0x1002018 ] }; + key <TLDE> { [ 0x1002019, 0x1002018 ] }; key <AE01> { [ 1, exclam, 0x1000610 ] }; key <AE02> { [ 2, 0x1000670, 0x1000611 ] }; key <AE03> { [ 3, 0x1000621, 0x1000613 ] }; @@ -253,9 +246,7 @@ xkb_symbols "snd" { key <AB09> { [ period, 0x100201D, 0x10006D4 ] }; key <AB10> { [ 0x1000626, Arabic_question_mark, 0x100002F ] }; - include "level3(ralt_switch)" - - // End alphanumeric section + include "level3(ralt_switch)" }; partial alphanumeric_keys @@ -306,10 +297,10 @@ xkb_symbols "ara" { key <AC08> { [ 0x10006a9 , 0x100062e ] }; key <AC09> { [ 0x1000644 , 0x1000613 ] }; key <AC10> { [ 0x100061b , 0x100003a ] }; - key <AC11> { [ 0x1000670 , 0x1000022 ] }; - key <BKSL> { [ 0x100060e , 0x1000614 ] }; + key <AC11> { [ 0x1000670 , 0x1000022 ] }; + key <BKSL> { [ 0x100060e , 0x1000614 ] }; - key <LSGT> { [ bar , brokenbar ] }; + key <LSGT> { [ bar , brokenbar ] }; key <AB01> { [ 0x1000632 , 0x1000630 ] }; key <AB02> { [ 0x1000634 , 0x1000698 ] }; key <AB03> { [ 0x1000686 , 0x100062b ] }; @@ -320,8 +311,6 @@ xkb_symbols "ara" { key <AB08> { [ 0x100060c , 0x1000650 ] }; key <AB09> { [ 0x10006d4 , 0x100064e ] }; key <AB10> { [ 0x1000003 , 0x100061f ] }; - - // End alphanumeric section }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/pl b/xorg-server/xkeyboard-config/symbols/pl index 4c8ed1d5c..e2559b3ac 100644 --- a/xorg-server/xkeyboard-config/symbols/pl +++ b/xorg-server/xkeyboard-config/symbols/pl @@ -80,9 +80,6 @@ xkb_symbols "legacy" { partial alphanumeric_keys xkb_symbols "qwertz" { - // Describes the differences between a very simple en_US - // keyboard and a very simple QWERTZ Polish keybaord - include "latin(type3)" name[Group1]="Polish (qwertz)"; @@ -152,11 +149,7 @@ xkb_symbols "dvorak" { include "kpdl(comma)" - // this to allow writing ALL CAPS with a Shift key include "level3(ralt_switch)" - - // use one of compose:* options to choose Multi_key, if you will, - // or layout +level3(ralt_switch_multikey) to revert standard behaviour }; // Default Polish keymap with Polish quotes on quotemark key @@ -222,7 +215,7 @@ xkb_symbols "dvp" { // upper row, left side - // // upper row, right side + // upper row, right side key <AD08> { [ c, C, cacute, Cacute ] }; key <AD10> { [ l, L, lstroke, Lstroke ] }; @@ -247,11 +240,7 @@ xkb_symbols "dvp" { include "kpdl(comma)" - // this to allow writing ALL CAPS with a Shift key include "level3(ralt_switch)" - - // use one of compose:* options to choose Multi_key, if you will, - // or layout +level3(ralt_switch_multikey) to revert standard behaviour }; // Silesian keyboard layout by Grzegorz Kulik <poslunsku@gmail.com> diff --git a/xorg-server/xkeyboard-config/symbols/pt b/xorg-server/xkeyboard-config/symbols/pt index b2e0b1255..010445570 100644 --- a/xorg-server/xkeyboard-config/symbols/pt +++ b/xorg-server/xkeyboard-config/symbols/pt @@ -63,9 +63,6 @@ xkb_symbols "nodeadkeys" { partial alphanumeric_keys xkb_symbols "mac" { - // Describes the differences between a very simple en_US - // keyboard and a very simple Portuguese keybaord - include "pt" name[Group1]= "Portuguese (Macintosh)"; diff --git a/xorg-server/xkeyboard-config/symbols/ro b/xorg-server/xkeyboard-config/symbols/ro index eea515995..46e275b72 100644 --- a/xorg-server/xkeyboard-config/symbols/ro +++ b/xorg-server/xkeyboard-config/symbols/ro @@ -120,8 +120,8 @@ xkb_symbols "std" { partial alphanumeric_keys xkb_symbols "std_cedilla" { - // Variant of the "std" layout with cedillas. - // Implements S and T with cedillas as in ISO-8859-2. + // Variant of the "std" layout using cedillas instead of commas. + // It implements S and T with cedillas as in ISO-8859-2. // Included for compatibility reasons. include "ro(std)" @@ -136,14 +136,13 @@ xkb_symbols "std_cedilla" { partial alphanumeric_keys xkb_symbols "winkeys" { // Describes the differences between a very simple US/ASCII - // keyboard and a very simple Romanian keybaord + // keyboard and a simple Romanian keyboard. // Created by Manfred Pohler, <Manfred.Pohler@t-online.de> (C) 2003 include "latin" name[Group1]="Romanian (WinKeys)"; - // Alphanumeric section key <TLDE> { [ bracketright, bracketleft ] }; key <AE01> { [ 1, exclam, asciitilde, asciitilde ] }; @@ -184,12 +183,9 @@ xkb_symbols "winkeys" { key <BKSL> { [ acircumflex, Acircumflex ] }; - // End alphanumeric section, begin "Keypad" include "kpdl(comma)" - // End "Keypad" section include "level3(ralt_switch)" - }; partial diff --git a/xorg-server/xkeyboard-config/symbols/rs b/xorg-server/xkeyboard-config/symbols/rs index 0a08c6211..b0d69ac18 100644 --- a/xorg-server/xkeyboard-config/symbols/rs +++ b/xorg-server/xkeyboard-config/symbols/rs @@ -108,7 +108,7 @@ xkb_symbols "cyralpha" { key <AC11> { [ Serbian_tshe, Serbian_TSHE, any,any ] }; // ' " key <BKSL> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // \ | - key <AB01> { [ U0455, U0405, any,any ] }; // z + key <AB01> { [ Cyrillic_zhe, Cyrillic_ZHE, any,any ] }; // z key <AB02> { [ Cyrillic_dzhe, Cyrillic_DZHE, any,any ] }; // x key <AB03> { [ Cyrillic_tse, Cyrillic_TSE, any,any ] }; // c key <AB04> { [ Cyrillic_ve, Cyrillic_VE, any,any ] }; // v diff --git a/xorg-server/xkeyboard-config/symbols/se b/xorg-server/xkeyboard-config/symbols/se index 04ce1d206..ef5e797ba 100644 --- a/xorg-server/xkeyboard-config/symbols/se +++ b/xorg-server/xkeyboard-config/symbols/se @@ -42,7 +42,6 @@ xkb_symbols "nodeadkeys" { name[Group1]="Swedish (eliminate dead keys)"; key <AE12> { [ acute, grave, plusminus, notsign ] }; - }; // Swedish Dvorak @@ -158,14 +157,7 @@ xkb_symbols "rus_nodeadkeys" { }; xkb_symbols "smi" { - - // Describes the differences between a Norwegian Northern Sami - // (keyboard with dead key support) and a Swedish/Finnish Sami - // keyboard according to the specs at: - // http://www.hum.uit.no/a/trond/se-lat9-sefi-keys.html - include "fi(smi)" - name[Group1]= "Northern Saami (Sweden)"; }; @@ -174,7 +166,7 @@ partial alphanumeric_keys xkb_symbols "mac" { // Describes the differences between a very simple en_US - // keyboard and a very simple Swedish(Sweden) keybaord + // keyboard and a very simple Swedish(Sweden) keyboard. include "latin" name[Group1]= "Swedish (Macintosh)"; @@ -188,17 +180,17 @@ xkb_symbols "mac" { key <AE07> { [ 7, slash, bar, backslash ] }; key <AE08> { [ 8, parenleft, bracketleft, braceleft ] }; key <AE09> { [ 9, parenright, bracketright, braceright ] }; - key <AB08> { [ comma, semicolon ] }; key <AE10> { [ 0, equal ] }; - key <AB09> { [ period, colon ] }; - key <AB10> { [ minus, underscore ] }; - key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] }; key <AE11> { [ plus, question ] }; - key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; - key <AD11> { [ aring, Aring ] }; key <AE12> { [ acute, grave ] }; + key <AD11> { [ aring, Aring ] }; key <AD12> { [ diaeresis, asciicircum, asciitilde ] }; + key <AC10> { [ odiaeresis, Odiaeresis, oslash, Ooblique ] }; + key <AC11> { [ adiaeresis, Adiaeresis, ae, AE ] }; key <BKSL> { [ apostrophe, asterisk, at ] }; + key <AB08> { [ comma, semicolon ] }; + key <AB09> { [ period, colon ] }; + key <AB10> { [ minus, underscore ] }; include "kpdl(comma)" include "level3(ralt_switch)" diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00 b/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00 index d72f9f9f9..312384000 100644 --- a/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00 +++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/sl-c3x00 @@ -5,7 +5,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Sharp SL-C3x00"; - // Upper row key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, quotedbl ] }; key <AE03> { [ 3, numbersign ] }; @@ -60,9 +59,7 @@ xkb_symbols "basic" { key <SPCE> { [ space ] }; key <AB08> { [ comma, slash, less ] }; key <AB09> { [ period, question, greater ] }; - // End alphanumeric section - // keypad key <UP> { [ Up, Up, Prior ] }; key <LEFT> { [ Left, Left, Home ] }; key <DOWN> { [ Down, Down, Next ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh index 575058ea7..25a55f1d5 100644 --- a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh +++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws003sh @@ -4,7 +4,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Sharp WS003SH"; - // Upper row key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, quotedbl ] }; key <AE03> { [ 3, numbersign ] }; @@ -59,9 +58,7 @@ xkb_symbols "basic" { key <LCTL> { [ Control_L ] }; key <SPCE> { [ space ] }; - // End alphanumeric section - // keypad key <UP> { [ Up, Up, Prior ] }; key <LEFT> { [ Left, Left, Home ] }; key <DOWN> { [ Down, Down, Next ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh index 57a075171..4dd08af2d 100644 --- a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh +++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws007sh @@ -4,7 +4,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Sharp WS007SH"; - // Upper row key <AE01> { [ 1, exclam ] }; key <AE02> { [ 2, quotedbl ] }; key <AE03> { [ 3, numbersign ] }; @@ -59,9 +58,7 @@ xkb_symbols "basic" { key <LCTL> { [ Control_L ] }; key <SPCE> { [ space ] }; - // End alphanumeric section - // keypad key <UP> { [ Up, Up, Prior ] }; key <LEFT> { [ Left, Left, Home ] }; key <DOWN> { [ Down, Down, Next ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh index 45976dff9..df230f6a5 100644 --- a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh +++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws011sh @@ -4,7 +4,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Sharp WS011SH"; - // Upper row key <HZTG> { type[Group1] = "THREE_LEVEL", symbols[Group1] = [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ] @@ -53,7 +52,6 @@ xkb_symbols "basic" { key <LCTL> { [ Control_L ] }; key <SPCE> { [ space ] }; - // End alphanumeric section key <UP> { [ Up, Up, Prior ] }; key <LEFT> { [ Left, Left, Home ] }; @@ -62,7 +60,6 @@ xkb_symbols "basic" { key <ESC> { [ Escape ] }; - // keypad key <KP1> { [ 1 ] }; key <KP2> { [ 2 ] }; key <KP3> { [ 3 ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh index 5231e1483..0bde5f0a9 100644 --- a/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh +++ b/xorg-server/xkeyboard-config/symbols/sharp_vndr/ws020sh @@ -4,7 +4,6 @@ partial default alphanumeric_keys xkb_symbols "basic" { name[Group1]= "Sharp WS020SH"; - // Upper row key <HZTG> { type[Group1]="THREE_LEVEL", symbols[Group1]= [ Zenkaku_Hankaku, Zenkaku_Hankaku, exclam ] @@ -53,9 +52,7 @@ xkb_symbols "basic" { key <LCTL> { [ Control_L ] }; key <SPCE> { [ space ] }; - // End alphanumeric section - // keypad key <UP> { [ Up, Up, Prior ] }; key <LEFT> { [ Left, Left, Home ] }; key <DOWN> { [ Down, Down, Next ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sony_vndr/us b/xorg-server/xkeyboard-config/symbols/sony_vndr/us index e91ca11b2..69102bfba 100644 --- a/xorg-server/xkeyboard-config/symbols/sony_vndr/us +++ b/xorg-server/xkeyboard-config/symbols/sony_vndr/us @@ -27,7 +27,7 @@ xkb_symbols "nwp5461" { include "us(basic)" - key <LALT> { [ Alt_L, Meta_L ] }; + key <LALT> { [ Alt_L, Meta_L ] }; key <RTSH> { [ Shift_R ] }; key <AB11> { [ NoSymbol ] }; @@ -84,8 +84,6 @@ xkb_symbols "nwp5461" { key <KPTB> { [ KP_Tab ] }; // End "Keypad" section - - // begin modifier mappings modifier_map Shift { Shift_R }; modifier_map Mod3 { Alt_L }; }; diff --git a/xorg-server/xkeyboard-config/symbols/sy b/xorg-server/xkeyboard-config/symbols/sy index 1a82f0e6e..aa6ce82f4 100644 --- a/xorg-server/xkeyboard-config/symbols/sy +++ b/xorg-server/xkeyboard-config/symbols/sy @@ -59,13 +59,9 @@ xkb_symbols "syc" { key <AB09> { [ 0x1000719, Arabic_semicolon ] }; key <AB10> { [ 0x1000707, Arabic_question_mark ] }; - // End Alphanumeric Section - - // Space + // Space plus zero-width non-joiner: include "nbsp(zwnj2)" - // Begin Modifier Mappings - modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; @@ -130,11 +126,6 @@ xkb_symbols "syc_phonetic" { key <AB09> { [ 0x100002E, Arabic_semicolon ] }; key <AB10> { [ 0x1000707, Arabic_question_mark ] }; - // End Alphanumeric Section - - - // Begin Modifier Mappings - modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L, Control_R }; diff --git a/xorg-server/xkeyboard-config/symbols/tw b/xorg-server/xkeyboard-config/symbols/tw index e97c0b60b..c01024a81 100644 --- a/xorg-server/xkeyboard-config/symbols/tw +++ b/xorg-server/xkeyboard-config/symbols/tw @@ -1,5 +1,3 @@ -// $XKeyboardConfig$ - partial default alphanumeric_keys xkb_symbols "tw" { @@ -7,7 +5,6 @@ xkb_symbols "tw" { include "us(basic)" - // Alphanumeric section key <TLDE> { [ grave, asciitilde, dead_grave, dead_tilde ] }; key <AE01> { [ 1, exclam, U030D, exclamdown ] }; key <AE02> { [ 2, at, U0358, twosuperior ] }; @@ -52,25 +49,25 @@ xkb_symbols "tw" { partial alphanumeric_keys xkb_symbols "indigenous" { - name[Group1]= "Taiwanese (indigenous)"; + name[Group1]= "Taiwanese (indigenous)"; - include "tw(tw)" + include "tw(tw)" - key <AC11> { [ U02BC, quotedbl, apostrophe, dead_doubleacute ] }; + key <AC11> { [ U02BC, quotedbl, apostrophe, dead_doubleacute ] }; - include "level3(ralt_switch)" + include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "saisiyat" { - name[Group1]= "Saisiyat (Taiwan)"; + name[Group1]= "Saisiyat (Taiwan)"; - include "tw(indigenous)" + include "tw(indigenous)" - key <AC10> { [ U02D0, colon, semicolon, dead_diaeresis ] }; + key <AC10> { [ U02D0, colon, semicolon, dead_diaeresis ] }; - include "level3(ralt_switch)" + include "level3(ralt_switch)" }; // EXTRAS: diff --git a/xorg-server/xkeyboard-config/symbols/ua b/xorg-server/xkeyboard-config/symbols/ua index ddfe11f9f..f7a2a59a4 100644 --- a/xorg-server/xkeyboard-config/symbols/ua +++ b/xorg-server/xkeyboard-config/symbols/ua @@ -99,8 +99,7 @@ xkb_symbols "legacy" { key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; key <AB10> { [ slash, question ] }; - key <LSGT> { [ slash, bar ] }; - // End alphanumeric section + key <LSGT> { [ slash, bar ] }; }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/uz b/xorg-server/xkeyboard-config/symbols/uz index d0e3c04b6..f0e07ede1 100644 --- a/xorg-server/xkeyboard-config/symbols/uz +++ b/xorg-server/xkeyboard-config/symbols/uz @@ -47,9 +47,9 @@ xkb_symbols "cyrillic" { key <AE10> { [ 0, parenright ] }; key <BKSL> { [ backslash, bar ] }; key <AB10> { [ period, comma ] }; - key <LSGT> { [ slash, bar ] }; + key <LSGT> { [ slash, bar ] }; -key.type[group1]="ALPHABETIC"; + key.type[group1]="ALPHABETIC"; key <AE11> { [Cyrillic_ghe_bar, Cyrillic_GHE_bar ] }; key <AE12> { [Cyrillic_ha_descender, Cyrillic_HA_descender ] }; @@ -86,8 +86,6 @@ key.type[group1]="ALPHABETIC"; key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; - - // End alphanumeric section }; partial alphanumeric_keys diff --git a/xorg-server/xkeyboard-config/symbols/vn b/xorg-server/xkeyboard-config/symbols/vn index c5e4c118b..58eb595da 100644 --- a/xorg-server/xkeyboard-config/symbols/vn +++ b/xorg-server/xkeyboard-config/symbols/vn @@ -15,7 +15,6 @@ xkb_symbols "basic" { name[Group1]= "Vietnamese"; - // Alphanumeric section key <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ abreve, Abreve ] }; key <AE02> { [ acircumflex, Acircumflex ] }; @@ -33,7 +32,5 @@ xkb_symbols "basic" { key <AD11> { [ uhorn, Uhorn ] }; key <AD12> { [ ohorn, Ohorn ] }; - // End alphanumeric section - include "level3(ralt_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga index 46d48a27e..f785288bb 100644 --- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga +++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/amiga @@ -113,10 +113,9 @@ default xkb_symbols "usa1" { key <KP0> { [ KP_0, KP_Insert ] }; key <KPDC> { [ KP_Decimal, KP_Delete ] }; - key <KPEN> { [ KP_Enter ] }; + key <KPEN> { [ KP_Enter ] }; // End "Keypad" section - // begin modifier mappings modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L }; diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt index 65048bde4..0ceb3ed13 100644 --- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt +++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/ataritt @@ -1,6 +1,7 @@ default xkb_symbols "us" { name[Group1]= "US/ASCII"; + key <ESC> { [ Escape ] }; // Alphanumeric section @@ -112,7 +113,6 @@ default xkb_symbols "us" { key <KPEN> { [ KP_Enter ] }; // End "Keypad" section - // begin modifier mappings modifier_map Shift { Shift_L, Shift_R }; modifier_map Lock { Caps_Lock }; modifier_map Control{ Control_L }; @@ -124,7 +124,6 @@ xkb_symbols "de" { name[Group1]= "German"; - // Alphanumeric section key <AE02> { [ 2, quotedbl ] }; key <AE03> { [ 3, section ] }; key <AE06> { [ 6, ampersand ] }; |